Instacart API endpoint
Returns Instacart's own search-term autosuggestions for a keyword within one store -- the same suggestion list shown in the site's own search box dropdown. This is term-level (matching search phrases plus a representative thumbnail), not a paginated product-results list. Public data sourced from Instacart's own storefront search.
/instacart/searchQuery parameters:
shop_id (required) — store's opaque shop id, from
GET /instacart/stores.store_slug (required) — store's retailer slug, from
GET /instacart/stores.q (required) — free-text search term.Notable response behavior:
relative_url links to that term's search-results page
on instacart.com (not itself part of this API's contract, since that
page's own product-listing data isn't exposed here).suggestions: [] with a 200, not
an error.| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| term | 10 | “milk” and 9 other values |
| thumbnail_url | 10 | d2lnr5mha7bycj.cloudfront.net |
| relative_url | 10 | median 318 characters |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| shop_id | string | Yes | Store's opaque shop id, from GET /instacart/stores | 9501 | |
| store_slug | string | Yes | Store's retailer slug, from GET /instacart/stores | safeway | |
| q | string | Yes | Free-text search term | milk | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/instacart/search?shop_id=9501&store_slug=safeway&q=milk" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"shop_id": "9501",
"query": "milk",
"suggestions": [
{
"term": "milk",
"thumbnail_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/thumb_1f0daedf-f4a0-4eb8-a54c-de3656820f43.png",
"relative_url": "/safeway/search_v3/milk?tracking.autocomplete_prefix=milk"
},
{
"term": "milk chocolate",
"thumbnail_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/thumb_example.png",
"relative_url": "/safeway/search_v3/milk%20chocolate"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/instacart.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | instacart.SearchResponse | No | ||||
| data.query | string | No | ||||
| data.shop_id | string | No | ||||
| data.suggestions | array | No | ||||
| data.suggestions[].relative_url | string | No | ||||
| data.suggestions[].term | string | No | ||||
| data.suggestions[].thumbnail_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/instacart/search?shop_id=9501&store_slug=safeway&q=milk" \
-H "x-api-key: $CRAWLORA_API_KEY"