# SERP API-responseformaat: elk blok en field van de JSON

> Het SerpCrypto SERP API-antwoord, field voor field: search_metadata, organic_results, ai_overview, people_also_ask, local pack, ads en arrays per engine.

- URL: https://serpcrypto.com/nl/docs/response/
- Laatst bijgewerkt: 2026-10-22
- Uitgever: SerpCrypto (https://serpcrypto.com)

Eén frame op elke engine, dan één blok per deel van de resultatenpagina. Deze pagina noemt elk blok, de fields en hun types. In de voorbeelden zijn IDs, aantallen, prijzen en resultaten illustratief.

**Snel antwoord — Wat bevat een SerpCrypto SERP API-antwoord?**

Elk **SerpCrypto** antwoord is één JSON-object: `search_metadata` (status, engine, gebruikte credits), `search_parameters` (de toegepaste instellingen), `search_information`, dan één blok per deel van de resultatenpagina, zoals `organic_results`, `ai_overview`, `people_also_ask` of `local_results`. Ontbrekende delen ontbreken simpelweg. Eén pagina kost 1 credit, vanaf US$ 0,30/1K zoekopdrachten; betalen met crypto, zonder KYC.

## Hoe ziet een volledig Google-antwoord eruit?

Het voorbeeld hieronder is een Google-zoekopdracht naar `standing desk` in het Verenigd Koninkrijk, ingekort tot één item per array. Een echt antwoord heeft ongeveer tien organische resultaten en elk ander blok dat de pagina voor die zoekopdracht, locatie en device toonde.

*engine=google, gl=gb: ingekort, illustratieve waarden*

```json
{
  "search_metadata": {
    "id": "srch_2b81d0c6fa47",
    "status": "success",
    "engine": "google",
    "created_at": "2026-10-22T10:02:31Z",
    "credits_used": 1
  },
  "search_parameters": {
    "engine": "google",
    "q": "standing desk",
    "gl": "gb",
    "hl": "en",
    "google_domain": "google.co.uk",
    "device": "desktop",
    "page": 1
  },
  "search_information": { "total_results": 52400000, "query_displayed": "standing desk" },
  "ai_overview": {
    "text": "A standing desk lets you work while standing or sitting…",
    "references": [
      { "index": 1, "title": "How to choose a standing desk", "link": "https://www.example.co.uk/guide", "source": "Example Guide" }
    ]
  },
  "ads": [
    { "position": 1, "block": "top", "title": "Electric Standing Desks", "link": "https://shop.example.com/desks", "displayed_link": "shop.example.com", "description": "Free delivery on…" }
  ],
  "organic_results": [
    {
      "position": 1,
      "title": "Best standing desks 2026, tested",
      "link": "https://www.example.co.uk/best-standing-desks",
      "displayed_link": "www.example.co.uk › reviews",
      "snippet": "We tested 14 electric and manual desks…",
      "date": "12 Oct 2026",
      "sitelinks": [ { "title": "Budget picks", "link": "https://www.example.co.uk/best-standing-desks#budget" } ]
    }
  ],
  "people_also_ask": [
    { "question": "Is it healthy to stand all day at a desk?", "snippet": "…", "title": "Standing at work", "link": "https://www.example.org/standing" }
  ],
  "shopping_results": [
    { "position": 1, "title": "Example Desk Pro 140 cm", "price": "£299.00", "source": "Example Store", "link": "https://shop.example.com/desk-pro" }
  ],
  "related_searches": [ { "query": "standing desk electric" }, { "query": "standing desk converter" } ],
  "pagination": { "current": 1, "next_page": 2 }
}
```

## Waarom ontbreken sommige blokken in mijn antwoord?

Omdat de resultatenpagina ze niet toonde. Google beslist per zoekopdracht, plaats en device of er ads, een AI Overview, een local pack of top stories worden getoond. SerpCrypto geeft terug wat de pagina toonde en laat de rest weg, in plaats van lege placeholders te sturen.

Lees elk blok met een standaardwaarde, zoals in de Python-regels hieronder. Dezelfde regel geldt binnen een blok: optionele fields zoals `date` of `sitelinks` verschijnen alleen bij resultaten die ze hebben.

*Python: lees optionele blokken veilig*

```python
data = response.json()

# A block is present only when the results page shows it: read with a default.
overview = data.get("ai_overview") or {}
organic = data.get("organic_results", [])
questions = [item["question"] for item in data.get("people_also_ask", [])]

if overview:
    print("AI Overview sources:", [ref["link"] for ref in overview.get("references", [])])
print(len(organic), "organic results,", len(questions), "questions")
```

## Wat staat er in search_metadata?

| Field | Type | Beschrijving |
| --- | --- | --- |
| `id` | string | Identifier van de zoekopdracht. Noem deze wanneer je contact opneemt met support. |
| `status` | string | `success` bij een 200-antwoord. |
| `engine` | string | De engine die de zoekopdracht uitvoerde. |
| `created_at` | string | Tijd van de zoekopdracht, ISO 8601 in UTC. |
| `credits_used` | integer | Credits die deze zoekopdracht kostte: 1 bij succes. |

## Wat zijn search_parameters en search_information?

Bewaar `search_parameters` bij je resultaten: het legt precies vast uit welk land, welke taal, welke plaats en welk apparaat een ranking kwam.

| Field | Type | Beschrijving |
| --- | --- | --- |
| `search_parameters` | object | De toegepaste parameters, met de standaardwaarden ingevuld: `engine`, `q`, `gl`, `hl`, `location`, `google_domain`, `device`, `page` en de andere die je hebt verstuurd. |
| `search_information.total_results` | integer | Het aantal resultaten dat de engine toonde, als het er een toonde. Een schatting, geen exact aantal. |
| `search_information.query_displayed` | string | De zoekopdracht zoals de resultatenpagina die toonde. |

## Welke velden heeft organic_results?

Organische resultaten zijn de onbetaalde webresultaten. Bij Bing heeft `organic_results` dezelfde vorm.

| Field | Type | Beschrijving |
| --- | --- | --- |
| `position` | integer | Volgorde van het resultaat in dit blok op deze pagina, beginnend bij 1. |
| `title` | string | De titel van de blauwe link. |
| `link` | string | De URL van het resultaat. |
| `displayed_link` | string | De URL of breadcrumb zoals onder de titel getoond. |
| `snippet` | string | De tekst die onder de titel wordt getoond. |
| `date` | string | Datum die naast het snippet wordt getoond, zoals op de pagina geschreven. Optioneel. |
| `sitelinks` | array | Extra links die onder het resultaat worden getoond, elk met `title` en `link`. Optioneel. |

## Hoe wordt het AI Overview teruggegeven?

`ai_overview` is alleen aanwezig wanneer Google een AI Overview toont voor die zoekopdracht en plaats. Veel zoekopdrachten hebben er geen.

| Field | Type | Beschrijving |
| --- | --- | --- |
| `ai_overview.text` | string | De tekst van het AI Overview zoals op de pagina getoond. |
| `ai_overview.references[].index` | integer | Volgorde van de bron in het overview. |
| `ai_overview.references[].title` | string | Titel van de geciteerde pagina. |
| `ai_overview.references[].link` | string | URL van de geciteerde pagina. |
| `ai_overview.references[].source` | string | Naam van de site, zoals getoond. |

## Wat bevatten ads en people_also_ask?

| Field | Type | Beschrijving |
| --- | --- | --- |
| `ads[].position` | integer | Volgorde binnen het eigen blok. |
| `ads[].block` | string | `top` of `bottom` van de pagina. |
| `ads[].title`, `link`, `displayed_link` | string | Kop, landings-URL en weergegeven URL van de advertentie. |
| `ads[].description` | string | Advertentietekst. |
| `people_also_ask[].question` | string | De vraag zoals weergegeven. |
| `people_also_ask[].snippet` | string | De antwoordtekst die wordt getoond wanneer de vraag wordt geopend. |
| `people_also_ask[].title`, `link` | string | Titel en URL van de pagina waar het antwoord vandaan komt. |

## Welke andere Google-blokken kunnen verschijnen?

| Blok | Velden | Wat het is |
| --- | --- | --- |
| `local_results` | `position`, `title`, `address`, `rating`, `reviews`, `type` | Het local pack: bedrijven op een kaart voor zoekopdrachten met een plaatsintentie. |
| `knowledge_graph` | `title`, `type`, `description`, `source.name`, `source.link` | Het knowledge panel over een persoon, plaats, bedrijf of ding. |
| `top_stories` | `title`, `link`, `source`, `date` | Nieuwsartikelen weergegeven in een carrousel. |
| `inline_videos` | `title`, `link`, `source`, `duration` | Videoresultaten weergegeven binnen de webresultaten. |
| `shopping_results` | `position`, `title`, `price`, `source`, `link` | Productvermeldingen weergegeven binnen de webresultaten. |
| `related_searches` | `query` | Zoekopdrachten die onderaan de pagina worden voorgesteld. |
| `pagination` | `current`, `next_page` | Huidig paginanummer en het volgende, wanneer dat er is. |

## Wat retourneren de andere engines?

Elke vertical gebruikt hetzelfde kader en voegt er een eigen array aan toe. Op Google Maps is `local_results` rijker dan het local pack van een webzoekopdracht.

| `engine` | Hoofdarray | Velden |
| --- | --- | --- |
| `google_news` | `news_results` | `position`, `title`, `link`, `source`, `date`, `snippet`, `thumbnail` |
| `google_images` | `images_results` | `position`, `title`, `original`, `original_width`, `original_height`, `thumbnail`, `source`, `link` |
| `google_maps` | `local_results` | `position`, `title`, `place_id`, `address`, `phone`, `website`, `rating`, `reviews`, `type`, `hours`, `gps_coordinates.latitude`, `gps_coordinates.longitude` |
| `google_shopping` | `shopping_results` | `position`, `title`, `price`, `extracted_price`, `currency`, `source`, `link`, `delivery`, `rating`, `reviews` |
| `bing` | `organic_results`, `related_searches` | Dezelfde velden als de organische resultaten van Google |

## Hoe worden prijzen, beoordelingen en datums getypeerd?

Waarden behouden de vorm die de pagina gebruikte wanneer de pagina ze als tekst schreef. `price` is een string met het valutasymbool, zoals `£299.00`, en Google Shopping voegt `extracted_price` toe als getal met `currency` als code. `rating` is een getal en `reviews` een integer. Datums zoals `date` blijven zoals ze op de pagina staan, bijvoorbeeld `12 Oct 2026` of `3 days ago`, dus parse ze in je eigen code als je een timestamp nodig hebt.

## Hoe bouw ik een totaalrangschikking over meerdere pagina's?

Sla het paginanummer bij elk resultaat op. `position` geeft de volgorde binnen het blok op één pagina, en `search_parameters.page` vertelt je welke pagina dat was. Ongeveer 10 organische resultaten per pagina, zoals Google levert sinds het in september 2025 stopte met num=100; elke extra pagina kost nog een credit.

Voor rank tracking houden de meeste teams `link`, `position`, `page`, `gl`, `location`, `device` en `created_at` per zoekwoord en per dag bij. Dat is genoeg om een ranking in kaart te brengen en een verandering te verklaren door plaats of apparaat. Zie [rank tracking](https://serpcrypto.com/nl/use-cases/rank-tracking/) voor de volledige methode.

## Vragen over het responseformaat

### Is de veldnaamgeving stabiel?

Ja, binnen versie 1. Nieuwe blokken of velden kunnen worden toegevoegd, dus negeer keys die je niet kent. Een veld verwijderen of hernoemen gebeurt met een nieuwe versie in het pad, zoals `/api/v2/`.

### Kan ik de ruwe HTML van de pagina krijgen?

Nee. Versie 1 retourneert alleen geparseerde JSON. De geparseerde blokken dekken wat de meeste tools nodig hebben: resultaten, advertenties, vragen, de AI Overview, het local pack en het knowledge panel.

### Waarom wijkt total_results af van wat ik heb geteld?

Het is de schatting die de engine toont, niet een telling van de resultaten die je kunt doorbladeren. Pagina's stoppen lang voor dat aantal; gebruik `pagination.next_page` om te weten of er nog een pagina bestaat.

### Kost een response zonder organische resultaten een credit?

Ja, als de zoekopdracht is geslaagd: een lege pagina is nog steeds een resultaat. Alleen fouten zijn gratis. 1 credit = 1 geslaagde zoekopdracht, die één pagina met resultaten oplevert op elke ondersteunde engine. Een mislukte zoekopdracht wordt niet in rekening gebracht.

---

SerpCrypto: SerpCrypto is een SERP-API voor developers en AI-agents die Google- en Bing-resultaten als JSON retourneert, betaald met crypto zonder ID te uploaden. Prepaid zoekcredits vanaf US$ 0,30/1K zoekopdrachten verlopen nooit. Zonder KYC — geen ID, geen selfie, geen documenten. Betalen met crypto.
