PrismCrawl API
Search Google, Google Maps, Bing, and Amazon and get normalized JSON; search endpoints can also return source HTML. Each successful search consumes one credit; failed searches do not consume credits.
Base URL: https://api.prismcrawl.com
POST /v1/google/search
Search Google
Returns normalized Google results, or encoded source HTML.
Requires the x-api-key header.
Request body
Successful query: 1 credit. Errors are free. Optional parameters may be omitted or set to `null` to use the endpoint default. Only parameters documented for this endpoint are used; other top-level fields are ignored.
| Field | Type | Required | Default | Description |
|---|
query | string | yes | — | The search query. The UTF-8 representation must not exceed 8,192 bytes; non-ASCII characters may use more than one byte. |
html | boolean | null | no | false | Return Brotli-compressed, Base64-encoded source HTML instead of normalized JSON. |
zero_trace | boolean | null | no | false | When true, PrismCrawl does not store the source HTML or parsed JSON. Audit and billing metadata is retained, but all other data is permanently discarded. Request history exposes only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged. |
device | string | null | no | — | Search as a mobile, tablet, or desktop device. Allowed: mobile, tablet, desktop, |
safe | string | null | no | — | Safe-search mode. `active` enables Google's filtering and Bing Strict SafeSearch; `off` requests unfiltered results. Search providers may still suppress content required by law or policy. Allowed: active, off, |
color_scheme | string | null | no | — | Request the provider's light or dark result-page theme. This affects source-page presentation, not ranking, and providers may ignore it. Allowed: light, dark, |
nfpr | integer | null | no | — | Controls Google query correction. `1` asks Google to search the submitted query without automatic spelling correction; `0` keeps normal correction behavior. Allowed: 0, 1, |
filter | integer | null | no | — | Requests Google duplicate-result filtering (`1`) or disables it (`0`). Google documents this behavior for Programmable Search, but does not guarantee it for the consumer HTML endpoint used here. Allowed: 0, 1, |
lr | string | null | no | — | Restrict Google result documents by language using `lang_<code>` syntax. Join alternatives with `|`, for example `lang_fr|lang_de`. |
cr | string | null | no | — | Restrict Google result documents by country using `country<CC>` syntax. Join alternatives with `|`, for example `countryUS|countryCA`. |
start | integer | null | no | — | Zero-based result offset. Off-grid values are accepted. |
google_domain | string | null | no | google.com | Google domain used for the search, written without a scheme or `www.` prefix. This is independent of `gl`, `hl`, `location`, and `coordinates`. Supported values follow the search-capable entries in [Google's current domain list](https://www.google.com/supported_domains); `google.cn` is excluded. Case-insensitive. Allowed: google.com, google.ad, google.ae, google.com.af, google.com.ag, google.al, google.am, google.co.ao, … (+179 more) |
gl | string | null | no | us | Two-letter Google result-country code. Matching results are boosted rather than strictly filtered. Case-insensitive. Allowed: ad, ae, af, ag, ai, al, am, an, … (+245 more) |
hl | string | null | no | en-US | Google interface language. This can also influence result selection for international queries. Case-insensitive. Allowed: af, sq, am, ar, hy, az, bn, bg, … (+69 more) |
location | string | null | no | — | An Active Google `Canonical Name` from the [pinned geo-target dataset](https://developers.google.com/static/google-ads/api/data/geo/geotargets-2026-07-16.csv.zip). Mutually exclusive with `coordinates`. |
coordinates | Coordinates | null | no | — | The searcher's latitude and longitude. Mutually exclusive with `location`. |
radius | integer | null | no | — | Radius in meters used to bias results around `coordinates`; results outside it may still appear. Requires `coordinates`. The maximum is 199 for desktop or an omitted device, and 1,000 for mobile or tablet. |
tbs | string | null | no | — | Google's native comma-separated `key:value` advanced-filter container, up to 512 characters. It supports time filters, sorting, and filters associated with a selected search tab. Relative time ranges use `qdr:<unit>[amount]`; custom inclusive ranges use `cdr:1,cd_min:M/D/YYYY,cd_max:M/D/YYYY`. Native filters may vary by search vertical and Google market. The unreliable `li` verbatim filter is not supported. |
tbm | string | null | no | — | Select a supported Google search vertical using its native `tbm` code. Mutually exclusive with `udm`. Allowed: nws, vid, isch, shop, lcl, bks, |
udm | integer | null | no | — | Select a supported Google search tab using its native numeric `udm` value: 1 (Local), 2 (Images), 6 (Forums), 7 (Videos), 12 (News), 14 (Web), 28 (Shopping), or 36 (Books). Availability may vary by market. Mutually exclusive with `tbm`. Allowed: 1, 2, 6, 7, 12, 14, 28, 36, … (+1 more) |
Example request
{
"query": "best espresso machines",
"html": false,
"zero_trace": false,
"device": null,
"safe": null,
"color_scheme": null,
"nfpr": null,
"filter": null,
"lr": null,
"cr": null,
"start": 0,
"google_domain": "google.com",
"gl": "us",
"hl": "en-US",
"location": null,
"coordinates": null,
"radius": null,
"tbs": null,
"tbm": null,
"udm": null
}Responses
- 200 — Search completed.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"format": "json",
"content": {
"search_parameters": {
"q": "best espresso machines",
"type": "search",
"engine": "google",
"device": null,
"start": null,
"google_domain": "google.com",
"gl": "us",
"hl": "en-US",
"location": null,
"coordinates": null,
"radius": null,
"tbs": null,
"tbm": null,
"udm": null,
"safe": null,
"nfpr": null,
"filter": null,
"lr": null,
"cr": null,
"color_scheme": null
},
"has_next_page": true,
"results": [
{
"id": "s_972c538a8734a8b7",
"rank": 1,
"type": "organic",
"title": "The 14 Best Espresso Machines, Tested & Reviewed",
"url": "https://www.seriouseats.com/best-espresso-machines-5185482",
"display_url": "seriouseats.com › best-espresso-machines-5185482",
"snippet": "Our favorite espresso machine is the Breville Bambino Plus.",
"domain": "seriouseats.com",
"favicon": "https://seriouseats.com/favicon.ico",
"source_name": "Serious Eats",
"position": {
"absolute": 1
},
"engine": "google",
"domain_info": {
"tld": "com",
"sld": "seriouseats",
"category": null
},
"classification": null
}
],
"serp_features": [
{
"id": "f_5236e4e73b2337d4",
"engine": "google",
"type": "people_also_ask",
"title": "People also ask",
"text": null,
"items": [
{
"title": "Which espresso machine brand is most reliable?",
"text": "Which espresso machine brand is most reliable?",
"link": null
}
],
"links": [],
"source_result_ids": [
"s_972c538a8734a8b7"
],
"position": {
"absolute": 1
},
"confidence": 0.8,
"extracted_at": "2026-07-01T16:45:24Z"
}
]
}
}
}- 400 — The JSON body is invalid or a field has the wrong type.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "invalid_request",
"message": "query is required"
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 402 — The API token has no credits remaining.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "credits_exhausted",
"message": "no credits remaining"
}
}- 405 — Only POST is supported for this endpoint.
Schema: ErrorResponse
- 413 — The JSON request body exceeds 64 KiB.
Schema: ErrorResponse
- 429 — Rate limit exceeded.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "quota_exceeded",
"message": "rate limit exceeded",
"rule": "10s",
"reset_at": "2026-07-15T18:42:10Z"
}
}- 500 — The search could not be completed. No quota has been deducted; retry the request or contact support with the request ID.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "internal_failure",
"message": "request failed. no quota has been deducted, please try again or contact support with the request ID."
}
}
POST /v1/google/maps/search
Search Google Maps
Returns up to 20 normalized Google Maps places from a coordinate-centered viewport.
Requires the x-api-key header.
Request body
Successful query: 1 credit. Errors are free. Optional parameters may be omitted or set to `null` to use the endpoint default. Only parameters documented for this endpoint are used; other top-level fields are ignored.
| Field | Type | Required | Default | Description |
|---|
query | string | yes | — | A place, business, product, or category query to search on Google Maps. |
zero_trace | boolean | null | no | false | When true, PrismCrawl does not store the normalized JSON response. Audit and billing metadata is retained, but all other data is permanently discarded. Request history exposes only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged. |
coordinates | object | yes | — | Required map center. |
zoom | number | null | no | 13.1 | Google Maps viewport zoom. Lower values cover a wider area; higher values focus more tightly around coordinates. |
start | integer | null | no | 0 | Zero-based Maps result offset. Use multiples of 20 for successive 20-place pages. |
gl | string | null | no | us | Two-letter Google country hint. Case-insensitive. Allowed: ad, ae, af, ag, ai, al, am, an, … (+245 more) |
hl | string | null | no | en-US | Google Maps interface language. Case-insensitive. Allowed: af, sq, am, ar, hy, az, bn, bg, … (+69 more) |
Example request
{
"query": "coffee shop",
"zero_trace": false,
"coordinates": {
"latitude": 30.2672,
"longitude": -97.7431
},
"zoom": 13.1,
"start": 0,
"gl": "us",
"hl": "en-US"
}Responses
- 200 — Google Maps search completed.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"format": "json",
"content": {
"search_parameters": {
"q": "coffee shop",
"type": "maps",
"engine": "google_maps",
"start": 0,
"gl": "us",
"hl": "en-US",
"coordinates": {
"latitude": 30.2672,
"longitude": -97.7431
},
"zoom": 13.1
},
"has_next_page": true,
"results": [
{
"id": "m_a7d14f4d349d5971",
"rank": 1,
"type": "place",
"title": "Terrible Love",
"place_id": "ChIJP8p2kJC1RIYR2qrGoXZtZCk",
"data_id": "0x8644b5909076ca3f:0x29646d76a1c6aada",
"data_cid": "2982629209513831130",
"kgmid": "/g/11ng70tdrd",
"google_maps_url": "https://www.google.com/maps/search/?api=1&query=coffee+shop&query_place_id=ChIJP8p2kJC1RIYR2qrGoXZtZCk",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJP8p2kJC1RIYR2qrGoXZtZCk&q=coffee+shop&hl=en-US&gl=US",
"address": "3908 Avenue B, Austin, TX 78751",
"structured_address": {
"neighborhood": "Hyde Park",
"street": "3908 Avenue B",
"city": "Austin",
"postal_code": "78751",
"state": "Texas",
"country": "US"
},
"phone": null,
"phone_international": null,
"website": "http://terriblelovecoffee.com/",
"domain": "terriblelovecoffee.com",
"category": "Coffee shop",
"category_id": "coffee",
"categories": [
"Coffee shop",
"Coffee stand"
],
"rating": 4.9,
"reviews": 328,
"price": null,
"gps_coordinates": {
"latitude": 30.3045132,
"longitude": -97.735632
},
"service_area": false,
"plus_code": {
"global_code": "8642F62R+38",
"compound_code": "F62R+38 Austin, Texas"
},
"open_state": "Closed",
"hours": "Closed · Opens 7:30 AM Fri",
"operating_hours": {
"thursday": [
"7:30 AM–2 PM"
]
},
"secondary_operating_hours": {},
"description": null,
"snippet": "Dogs allowed",
"review_snippets": [
{
"text": "Great coffee and a welcoming patio.",
"rating": 5
}
],
"popular_times": {
"thursday": [
{
"hour": 9,
"busyness_percent": 75,
"description": "Usually a little busy",
"time": "9 AM"
}
]
},
"thumbnail": "https://lh3.googleusercontent.com/example=w408-h544-k-no",
"timezone": "America/Chicago",
"claimed": true,
"order_online_link": null,
"reservations_link": null,
"booking_link": null,
"hotel_class": null,
"check_in_time": null,
"check_out_time": null,
"amenities": [],
"highlights": [
"LGBTQ+ friendly"
],
"attributes": [
{
"id": "accessibility",
"name": "Accessibility",
"options": [
{
"name": "Wheelchair accessible entrance",
"enabled": true
}
]
}
]
}
],
"serp_features": []
}
}
}- 400 — The JSON body is invalid or a field has the wrong type.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "invalid_request",
"message": "query is required"
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 402 — The API token has no credits remaining.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "credits_exhausted",
"message": "no credits remaining"
}
}- 405 — Only POST is supported for this endpoint.
Schema: ErrorResponse
- 413 — The JSON request body exceeds 64 KiB.
Schema: ErrorResponse
- 429 — Rate limit exceeded.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "quota_exceeded",
"message": "rate limit exceeded",
"rule": "10s",
"reset_at": "2026-07-15T18:42:10Z"
}
}- 500 — The search could not be completed. No quota has been deducted; retry the request or contact support with the request ID.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "internal_failure",
"message": "request failed. no quota has been deducted, please try again or contact support with the request ID."
}
}
POST /v1/microsoft/search
Search Bing
Returns normalized Bing results, or encoded source HTML.
Requires the x-api-key header.
Request body
Successful query: 1 credit. Errors are free. Optional parameters may be omitted or set to `null` to use the endpoint default. Only parameters documented for this endpoint are used; other top-level fields are ignored.
| Field | Type | Required | Default | Description |
|---|
query | string | yes | — | The search query. The UTF-8 representation must not exceed 8,192 bytes; non-ASCII characters may use more than one byte. |
html | boolean | null | no | false | Return Brotli-compressed, Base64-encoded source HTML instead of normalized JSON. |
zero_trace | boolean | null | no | false | When true, PrismCrawl does not store the source HTML or parsed JSON. Audit and billing metadata is retained, but all other data is permanently discarded. Request history exposes only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged. |
device | string | null | no | — | Search as a mobile, tablet, or desktop device. Allowed: mobile, tablet, desktop, |
safe | string | null | no | — | Safe-search mode. `active` enables Google's filtering and Bing Strict SafeSearch; `off` requests unfiltered results. Search providers may still suppress content required by law or policy. Allowed: active, off, |
color_scheme | string | null | no | — | Request the provider's light or dark result-page theme. This affects source-page presentation, not ranking, and providers may ignore it. Allowed: light, dark, |
sp | integer | null | no | — | Bing-native spelling hint. The supported value is `-1`, an undocumented field observed in Bing-generated search URLs. Its behavior is best-effort and may change upstream. Allowed: -1, |
first | integer | null | no | 1 | Bing's one-based native page position. Omit it or use `1` for the front page. Values greater than `1` require the `next_page_token` returned by the preceding response and must match that token; arbitrary offsets are rejected. |
next_page_token | string | null | no | — | Bing continuation token from the preceding response. When supplied, `first` may be omitted. Resend the same `tbs` and search-control values used by the original request. |
cc | string | null | no | us | Two-letter Bing result-country code. Case-insensitive. The supported values follow Bing's published country-code list. Allowed: ar, au, at, be, br, ca, cl, dk, … (+29 more) |
setlang | string | null | no | en-US | Bing interface-language hint. It affects Bing-generated interface strings, such as related-search labels; it does not restrict search results to that language. Bing may fall back to English when it cannot localize a value. See Microsoft's current [`set_lang` guidance](https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/bing-tools#optional-parameters). |
tbs | string | null | no | — | Google-compatible time-range input translated to Bing's native date filter. Relative ranges use `qdr:<unit>[amount]`, where the unit is `d` (day), `w` (week), `m` (month), or `y` (year), and the optional positive amount is at most 10,000. Custom inclusive ranges use `cdr:1,cd_min:M/D/YYYY,cd_max:M/D/YYYY`. Bing has day-level precision, so hour ranges (`qdr:h`) are rejected. Resend the same value with a filtered search's `next_page_token`. |
Example request
{
"query": "best espresso machines",
"html": false,
"zero_trace": false,
"device": null,
"safe": null,
"color_scheme": null,
"sp": null,
"first": 1,
"next_page_token": null,
"cc": "us",
"setlang": "en-US",
"tbs": null
}Responses
- 200 — Search completed.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"format": "json",
"next_page_token": "{\"version\":1,\"url\":\"https://www.bing.com/search?q=best%20espresso%20machines&first=6\",\"referer\":\"https://www.bing.com/search?q=best%20espresso%20machines\",\"first\":6,\"progressive\":false,\"query\":\"best espresso machines\",\"device\":\"mobile\",\"cc\":\"us\",\"setlang\":\"en-US\"}",
"content": {
"search_parameters": {
"q": "best espresso machines",
"type": "search",
"engine": "bing",
"device": null,
"first": null,
"cc": "us",
"setlang": "en-US",
"tbs": null,
"safe": null,
"sp": null,
"color_scheme": null
},
"has_next_page": true,
"results": [
{
"id": "s_129cad18eb11c90a",
"rank": 1,
"type": "organic",
"title": "The Best Espresso Machines",
"url": "https://example.com/best-espresso-machines",
"display_url": "example.com › best-espresso-machines",
"snippet": "Independent reviews of leading espresso machines.",
"domain": "example.com",
"favicon": "https://example.com/favicon.ico",
"source_name": "Example",
"position": {
"absolute": 1
},
"engine": "bing",
"domain_info": {
"tld": "com",
"sld": "example",
"category": null
},
"classification": null
}
],
"serp_features": []
}
}
}- 400 — The JSON body is invalid or a field has the wrong type.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "invalid_request",
"message": "query is required"
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 402 — The API token has no credits remaining.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "credits_exhausted",
"message": "no credits remaining"
}
}- 405 — Only POST is supported for this endpoint.
Schema: ErrorResponse
- 413 — The JSON request body exceeds 64 KiB.
Schema: ErrorResponse
- 429 — Rate limit exceeded.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "quota_exceeded",
"message": "rate limit exceeded",
"rule": "10s",
"reset_at": "2026-07-15T18:42:10Z"
}
}- 500 — The search could not be completed. No quota has been deducted; retry the request or contact support with the request ID.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "internal_failure",
"message": "request failed. no quota has been deducted, please try again or contact support with the request ID."
}
}
POST /v1/amazon/search
Search Amazon
Returns normalized Amazon product results, a typed navigation or empty-results surface, or encoded source HTML.
Requires the x-api-key header.
Request body
Successful query: 1 credit. Errors are free. Optional parameters may be omitted or set to `null` to use the endpoint default. Only parameters documented for this endpoint are used; other top-level fields are ignored.
| Field | Type | Required | Default | Description |
|---|
query | string | yes | — | The search query. The UTF-8 representation must not exceed 8,192 bytes; non-ASCII characters may use more than one byte. |
html | boolean | null | no | false | Return Brotli-compressed, Base64-encoded source HTML instead of normalized JSON. |
zero_trace | boolean | null | no | false | When true, PrismCrawl does not store the source HTML or parsed JSON. Audit and billing metadata is retained, but all other data is permanently discarded. Request history exposes only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged. |
device | string | null | no | desktop | Device profile used for the Amazon request. Allowed: desktop, mobile, |
amazon_domain | string | null | no | amazon.com | Amazon marketplace domain, without a scheme or `www.` prefix. Allowed: amazon.com, amazon.ca, amazon.com.mx, amazon.com.br, amazon.co.uk, amazon.ie, amazon.de, amazon.es, … (+15 more) |
language | string | null | no | — | Amazon locale supported by the selected marketplace. Omit it to use the marketplace default (the first locale shown): amazon.com: en_US, es_US, ar_AE, de_US, he_IL, ko_KR, pt_BR, zh_CN, zh_TW; amazon.ca: en_CA, fr_CA; amazon.com.mx: es_MX; amazon.com.br: pt_BR; amazon.co.uk: en_GB; amazon.ie: en_IE; amazon.de: de_DE, en_GB, cs_CZ, nl_NL, pl_PL, tr_TR, da_DK; amazon.es: es_ES, pt_PT, en_GB; amazon.fr: fr_FR, en_GB; amazon.it: it_IT, en_GB; amazon.nl: nl_NL, en_GB; amazon.se: sv_SE, en_GB; amazon.pl: pl_PL; amazon.com.be: nl_BE, fr_BE, en_GB; amazon.com.tr: tr_TR; amazon.ae: en_AE, ar_AE; amazon.sa: ar_AE, en_AE; amazon.eg: ar_AE, en_AE; amazon.in: en_IN, hi_IN, ta_IN, te_IN, kn_IN, ml_IN, bn_IN, mr_IN; amazon.co.jp: ja_JP, en_US, zh_CN; amazon.com.au: en_AU; amazon.sg: en_SG. Allowed: en_US, es_US, ar_AE, de_US, he_IL, ko_KR, pt_BR, zh_CN, … (+32 more) |
page | integer | null | no | 1 | One-based Amazon results page. |
category_id | string | null | no | — | Amazon category or browse-node identifier. |
sort_by | string | null | no | — | Amazon-native result ordering. Allowed: featured, price_low_to_high, price_high_to_low, average_review, most_recent, bestsellers, bestseller_rankings, |
rh | string | null | no | — | Comma-separated Amazon `key:value` refinements. |
merchant_id | string | null | no | — | Restrict results to an Amazon merchant ID. |
direct_search | boolean | null | no | false | Use Amazon's direct category-search mode. |
Example request
{
"query": "best espresso machines",
"html": false,
"zero_trace": false,
"device": null,
"amazon_domain": "amazon.com",
"language": null,
"page": 1,
"category_id": null,
"sort_by": null,
"rh": null,
"merchant_id": null,
"direct_search": false
}Responses
- 200 — Search completed.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"format": "json",
"content": {
"search_parameters": {
"q": "best espresso machines",
"type": "search",
"engine": "amazon",
"device": "desktop",
"amazon_domain": "amazon.com",
"language": "en_US",
"page": 1,
"category_id": null,
"sort_by": null,
"rh": null,
"merchant_id": null,
"direct_search": false
},
"search_information": {
"surface": "product_results",
"page_title": "Amazon.com : best espresso machines",
"total_results": 1247,
"results_text": "1-48 of 1,247 results",
"query_displayed": "best espresso machines",
"original_query": null,
"page": 1,
"total_pages": 7,
"store": "aps"
},
"results": [
{
"asin": "B0D1234567",
"rank": 1,
"type": "organic",
"sponsored": false,
"title": "Compact Espresso Machine",
"url": "https://www.amazon.com/example/dp/B0D1234567",
"clean_url": "https://www.amazon.com/dp/B0D1234567",
"image": "https://m.media-amazon.com/images/example.jpg",
"price": {
"raw": "$199.99",
"value": 199.99,
"currency": "USD"
},
"old_price": null,
"unit_price": null,
"rating": 4.6,
"reviews": 2318,
"prime": true,
"best_seller": true,
"amazon_choice": false,
"limited_time_deal": false,
"amazon_brand": false,
"kindle_unlimited": false,
"prime_video": false,
"exclusive_to_amazon": false,
"small_business": false,
"amazon_fresh": false,
"whole_foods_market": false,
"climate_pledge_friendly": false,
"badges": [
"Best Seller"
],
"bought_last_month": "1K+ bought in past month",
"coupon": null,
"offers": [],
"delivery": "FREE delivery Tomorrow",
"availability": null,
"variations": null,
"tags": [],
"position": {
"absolute": 1
}
}
],
"filters": [],
"categories": [],
"related_searches": [],
"has_next_page": true,
"serp_features": []
}
}
}- 400 — The JSON body is invalid or a field has the wrong type.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "invalid_request",
"message": "query is required"
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 402 — The API token has no credits remaining.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "credits_exhausted",
"message": "no credits remaining"
}
}- 405 — Only POST is supported for this endpoint.
Schema: ErrorResponse
- 413 — The JSON request body exceeds 64 KiB.
Schema: ErrorResponse
- 429 — Rate limit exceeded.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "quota_exceeded",
"message": "rate limit exceeded",
"rule": "10s",
"reset_at": "2026-07-15T18:42:10Z"
}
}- 500 — The search could not be completed. No quota has been deducted; retry the request or contact support with the request ID.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "internal_failure",
"message": "request failed. no quota has been deducted, please try again or contact support with the request ID."
}
}
GET /v1/google/search/{request_id}
Retrieve a Google request
Returns request metadata by default. Set `artifact=json` to download the parsed response or `artifact=html` to download the Brotli-compressed source HTML. For a `zero_trace` request, no artifacts exist and the metadata response contains only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged.
Requires the x-api-key header.
Responses
- 200 — Request metadata or the selected archived artifact.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"type": "ZERO_TRACE",
"status_code": 200,
"credits_charged": true
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 404 — The request or selected archive does not belong to this API key or is unavailable.
Schema: ErrorResponse
- 429 — The request-history rate limit was exceeded.
Schema: ErrorResponse
GET /v1/google/maps/search/{request_id}
Retrieve a Google Maps request
Returns request metadata by default. Set `artifact=json` to download the normalized response. For a `zero_trace` request, no artifacts exist and the metadata response contains only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged.
Requires the x-api-key header.
Responses
- 200 — Request metadata or the selected archived artifact.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"type": "ZERO_TRACE",
"status_code": 200,
"credits_charged": true
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 404 — The request or selected archive does not belong to this API key or is unavailable.
Schema: ErrorResponse
- 429 — The request-history rate limit was exceeded.
Schema: ErrorResponse
GET /v1/microsoft/search/{request_id}
Retrieve a Bing request
Returns request metadata by default. Set `artifact=json` to download the parsed response or `artifact=html` to download the Brotli-compressed source HTML. For a `zero_trace` request, no artifacts exist and the metadata response contains only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged.
Requires the x-api-key header.
Responses
- 200 — Request metadata or the selected archived artifact.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"type": "ZERO_TRACE",
"status_code": 200,
"credits_charged": true
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 404 — The request or selected archive does not belong to this API key or is unavailable.
Schema: ErrorResponse
- 429 — The request-history rate limit was exceeded.
Schema: ErrorResponse
GET /v1/amazon/search/{request_id}
Retrieve a Amazon request
Returns request metadata by default. Set `artifact=json` to download the parsed response or `artifact=html` to download the Brotli-compressed source HTML. For a `zero_trace` request, no artifacts exist and the metadata response contains only type `ZERO_TRACE`, the request HTTP status code, and whether the account was charged.
Requires the x-api-key header.
Responses
- 200 — Request metadata or the selected archived artifact.
{
"success": true,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": {
"type": "ZERO_TRACE",
"status_code": 200,
"credits_charged": true
}
}- 401 — The API token is missing, invalid, expired, or revoked.
{
"success": false,
"request_id": "66ca8deb-1dc2-4017-865f-c4fb0e3c7c0d",
"data": null,
"error": {
"code": "missing_api_key",
"message": "missing x-api-key"
}
}- 404 — The request or selected archive does not belong to this API key or is unavailable.
Schema: ErrorResponse
- 429 — The request-history rate limit was exceeded.
Schema: ErrorResponse