Skip to main content
Nimble SERP is a realtime API that returns live Google search results as structured data. Submit a query and get back organic listings, pagination, and related questions, parsed and typed with high success rates.

SERP SLA

Default SLA and limitations for SERP API
Need higher throughput? SERP scales up to 1,000 QPS. Contact Sales to discuss your requirements.

Quick Start

Example Request

Example Response

How it works

1

Provide a query and search engine

Supply the search query, target engine (google_search), and optional geo-targeting
2

Nimble runs the search

Runs via Nimble’s infrastructure with geo-targeting applied, no rendering delays, no blocking
3

Results returned as structured data

Data is returned as parsed entity arrays under data.parsing.entities, with optional raw HTML when "html" is included in formats

Parameters

string
required
The search engine to query.
string
The search query string. Required for google_search, google_aio, google_news, google_images, and google_maps_search. Not used for google_maps_place or google_maps_reviews (use place_id instead).Example: "NBA Allstars 2026"
string
Google-assigned identifier for a specific place. Required for google_maps_place and google_maps_reviews. Cannot be used together with data_id in the same request.Example:
string
Alternative Google identifier for a specific place. Use instead of place_id when you have a data_id. Cannot be used together with place_id in the same request.Example:
object
Optional center point for google_maps_search. Biases results around the given location.Fields:
  • latitude (string)
  • longitude (string)
Example:
string
Run the search as if from a specific country. Returns geo-localized results - Optimized for USUse ISO Alpha-2 codes: US, GB, DE, FR, JP, etc.Example: "US"
string
Language preference for the search results. Use LCID standard.Examples:
  • en (English)
  • en-US (English, United States)
  • fr-FR (French, France)
string
Location context for the search. Accepted for google_search and google_images. Not supported for Maps engines.You can pass either:
  • A location string: Nimble resolves it to the corresponding UULE value (e.g. "United States", "New York, NY")
  • A raw UULE value: Google’s encoded location parameter (e.g. "w+CAIQICIiChIJOwQ...")
Examples:
  • "United States"
  • "London, England"
string
Filter results by time range. Only supported for google_search and google_images.Options:If omitted, no time filter is applied.
boolean
When set to true, removes the data.html field from the response. Useful for reducing response size when raw HTML is not needed.Default: false
string
Defines the order in which reviews are returned. Supported on google_maps_reviews only.
integer
default:"10"
Number of results to return. Supported on google_search, google_aio, and google_maps_reviews.
integer
Offsets the results by this number of listings. For example, start: 20 skips the first 20 results and returns the next page.Example: 20
integer
Offsets the results by this number of listings. Used for pagination with google_maps_search.Example: 20
boolean
default:"false"
When true, returns raw HTML per individual result page instead of a single stitched HTML string. Only relevant when num_results exceeds 10. Supported on google_search and google_images.Default: false
boolean
default:"false"
When true, increases the number of paid (sponsored) ads in the results by running the request in incognito mode. Requires JS rendering.Default: false
string
Emulate a specific device type. Supported on google_search and google_images.If omitted, defaults to desktop.
string
default:"com"
Google domain TLD to target. Supported on google_aio. Allows targeting country-specific Google domains.Examples: com, co.uk, de, fr, co.jpDefault: com
string
Cursor token for fetching the next page of reviews. Obtained from the previous google_maps_reviews response. Supported on google_maps_reviews only.

Search Engines

Returns organic web results, pagination, related questions, top stories, answer boxes, and more. Supported parameters:
  • query — search query string (required)
  • num_results — number of results to return, 1–100, default 10
  • start — result offset for fetching beyond the first batch
  • country — target country for localized results (ISO Alpha-2, e.g. US)
  • locale — language preference (LCID, e.g. en)
  • location — physical location context (string or raw UULE value)
  • time — filter results by recency (hour, day, week, month, year)
  • include_pages_html — return per-page HTML instead of a single stitched string
  • ads_optimization — boost sponsored results using incognito rendering (requires JS)
  • device — emulate a specific device type (mobile)
  • no_html — omit data.html from the response
cURL

Google AI Overview

Returns Google search results with the AI Overview block rendered at the top. The page is rendered to capture Google’s AI-generated answer alongside standard organic results. Supported parameters:
  • query — search query string (required)
  • num_results — number of results to return, 1–100, default 10
  • start — result offset for fetching beyond the first batch
  • country — target country, defaults to US (ISO Alpha-2)
  • locale — language preference (LCID, e.g. en)
  • location — physical location context (string or raw UULE value)
  • time — filter results by recency (hour, day, week, month, year)
  • domain — Google TLD to target (e.g. com, co.uk)
  • device — emulate a specific device type (mobile)
  • include_pages_html — return per-page HTML instead of a single stitched string
  • no_html — omit data.html from the response
Page rendering is always enabled and cannot be disabled. Expect higher latency than google_search.
cURL

Google News

Returns recent news articles matching the query, sourced from Google News. Supported parameters:
  • query — search query string (required)
  • country — target country for localized results (ISO Alpha-2, e.g. US)
  • locale — language preference (LCID, e.g. en)
  • no_html — omit data.html from the response
Pagination not supported. location and time parameters have no effect on this engine.
cURL

Google Images

Returns image results for a query, including image URLs, titles, and source pages. Supported parameters:
  • query — search query string (required)
  • start — result offset for fetching beyond the first batch
  • country — target country for localized results (ISO Alpha-2, e.g. US)
  • locale — language preference (LCID, e.g. en)
  • location — physical location context (string or raw UULE value)
  • time — filter results by recency (hour, day, week, month, year)
  • include_pages_html — return per-page HTML instead of a single stitched string
  • ads_optimization — boost sponsored results using incognito rendering (requires JS)
  • device — emulate a specific device type (mobile)
  • no_html — omit data.html from the response
ads_optimization requires JS rendering.
cURL
Returns business and location listings from Google Maps. Optionally bias results around specific coordinates. Supported parameters:
  • query — search query string (required)
  • coordinates — GPS coordinates to bias results around (latitude,longitude)
  • offset — result offset for paginating through listings
  • country — target country for localized results (ISO Alpha-2, e.g. US)
  • locale — language preference (LCID, e.g. en)
  • no_html — omit data.html from the response
Raw HTML is never returned for this engine — no_html is always true regardless of input.
cURL

Google Maps Place

Returns detailed information about a specific place by its Google Maps place_id. Supported parameters:
  • place_id — Google Maps place identifier (required if data_id not provided)
  • data_id — Google Maps data identifier (required if place_id not provided)
  • no_html — omit data.html from the response
Pagination not supported. Returns a single result per request.
cURL

Google Maps Reviews

Returns user reviews for a specific place by its Google Maps place_id. Supported parameters:
  • place_id — Google Maps place identifier (required if data_id not provided)
  • data_id — Google Maps data identifier (required if place_id not provided)
  • sort — review sort order (relevant, newest, highest_rating, lowest_rating)
  • num_results — number of reviews to return, range 10–20
  • paging_token_id — cursor token from previous response for next page
  • no_html — omit data.html from the response
num_results is capped at 20.
cURL

Response

All responses share the same top-level envelope:

Entities by engine

OrganicResult: one entry perweb resultAnswerBox: featured snippet at the top of resultsRelatedQuestionRelatedSearchPagination
NewsResults: the fullnews results object
ImageResult: one entry perimage
SearchResult: one entry perbusiness or location
Place: detailed information about a single place
Review: one entry peruser review

Async & Batch Requests

Parameters

string
Storage provider for results. When specified, results are saved to your cloud storage instead of Nimble’s servers.Options: s3 (Amazon S3), gs (Google Cloud Storage)
string
Bucket path where results will be saved. Results are stored as {task_id}.json at the specified location.Format: s3://your-bucket/path/prefix/Example: s3://my-bucket/nimble-results/
boolean
default:"false"
Compress results with GZIP before saving. Reduces storage costs and transfer time. When true, results are saved as {task_id}.json.gz.
string
Custom filename for the stored object instead of the default task ID.Example: "my-custom-name" saves as my-custom-name.json
string
Webhook URL to receive a POST request when the task completes. Nimble sends task metadata (without result data) to this URL when extraction finishes.Example: https://your-api.com/webhook/complete
Cloud storage delivery requires bucket permissions to be configured before use. See Bucket Permissions for setup instructions.

Async API

Submit a request and receive a task_id immediately — results are delivered via polling, webhook callback, or directly to your cloud storage bucket.
cURL
Response
Use the task_id to poll for status or retrieve results.
Polling, webhooks, and cloud storage delivery are all supported. See Callbacks & Delivery for the full guide.

Batch API

Submit multiple SERP requests in a single call. Use inputs for per-request parameters and shared_inputs for parameters shared across all tasks.

Examples

Search for different queries in one batch:
cURL
Per-request country and locale overrides. Shared inputs set the engine and delivery:
cURL
Set the query in shared_inputs and vary search_engine per input:
cURL

Batch response

Each task in the batch gets its own id. Results are saved to storage_url and a callback fires per completed task.

Check batch progress

cURL
Response
progress ranges from 0 to 1. When completed is true, all tasks are done.

List all batches

cURL
Response
Paginate by passing cursor until pagination.hasNext is false.

Retrieve batch summary

Once complete, fetch full task details for the entire batch:
cURL
Response

Pagination

google_news and google_maps_place do not support pagination.
1

Pull up to 100 results in one request

Set num_results: 100 to get up to 100 organic results in a single call. For most use cases, this eliminates pagination entirely.
cURL
2

Need more than 100? Add start to fetch the next batch

Combine num_results: 100 with start to pull 100 results at a time beyond the first page. Increment start by 100 for each subsequent batch.
cURL
start: 100 → results 101–200, start: 200 → results 201–300, and so on.
To receive raw HTML per result page instead of a single stitched HTML string, add "include_pages_html": true to your request.

Limitations

Next steps

API Reference

Full API reference for the SERP endpoint

Fast SERP

Lower latency variant optimized for time-sensitive workloads

Extract

Extract structured content from any result URL