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) |
delivery_country | string | null | no | — | Amazon delivery destination as an ISO 3166-1 alpha-2 country code. This is independent of marketplace, interface language, and server egress. Omit it to use the selected marketplace's home country. It controls catalog availability, delivery promises, and shipping context. Allowed: AD, AE, AF, AG, AI, AL, AM, AO, … (+231 more) |
postal_code | string | null | no | — | Exact delivery postal code. It is accepted only when `delivery_country` is the selected marketplace's home country. Supported marketplace examples: amazon.com: 10001; amazon.ca: M5V 3L9; amazon.com.mx: 06600; amazon.com.br: 01310-100; amazon.co.uk: SW1A 1AA; amazon.ie: D02 X285; amazon.de: 10115; amazon.es: 28001; amazon.fr: 75001; amazon.it: 00100; amazon.se: 111 20; amazon.pl: 00-001; amazon.com.tr: 34000; amazon.in: 110001; amazon.co.jp: 100-0001; amazon.com.au: 2000; amazon.sg: 018956. Amazon-defined city/area marketplaces without reliable postal targeting reject this field. |
currency | string | null | no | — | Three-letter display-currency override. This changes displayed prices only; it does not change delivery eligibility or destination. Omit it for the marketplace's native currency. Most marketplaces accept only their native currency; amazon.com and amazon.ae support additional currencies exposed by Amazon's selector. Allowed: AED, AMD, ARS, AUD, AWG, AZN, BBD, BGN, … (+79 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,
"delivery_country": null,
"postal_code": null,
"currency": 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",
"delivery_country": "US",
"postal_code": null,
"currency": null,
"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