Grocery price and availability monitoring
Use Instacart endpoints to turn grocery price and availability monitoring into repeatable API requests with documented inputs and JSON responses.
Turn public Instacart pages into structured grocery data — nearby stores by postal code (with EBT acceptance and delivery ETA), single-product detail with live pricing and nutrition, keyword search within a store or across every nearby retailer at once, trending searches, and a store's department taxonomy, all as normalized JSON. Credential-free.
Find nearby Instacart stores, get product detail and pricing, and search for products by keyword as structured JSON.
Endpoint families
6
Documented params
21
Examples
6
Live catalog snapshot
Active endpoints
6
Methods
GET
Required params
21
Schema refs
6
{
"platform": "Instacart",
"endpoint": "instacart-stores",
"method": "GET",
"path": "/instacart/stores",
"auth": "apiKey"
}Use cases
Find nearby Instacart stores, get product detail and pricing, and search for products by keyword as structured JSON.
Use Instacart endpoints to turn grocery price and availability monitoring into repeatable API requests with documented inputs and JSON responses.
Use Instacart endpoints to turn store coverage and delivery-eta tracking into repeatable API requests with documented inputs and JSON responses.
Use Instacart endpoints to turn product search and category research into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Instacart endpoint catalog — 6 endpoints, 21 documented request parameters, and 6 published response schemas — the same catalog Docs and Playground run against.
6 documented Instacart endpoints, grouped into 6 request families — Departments, Item and Search, plus 3 more.
21 request parameters are documented across those Instacart endpoints, 21 of them required — the full input contract is public before you write any integration code.
6 of the 6 Instacart endpoints ship a recorded example response, and 6 carry a documented response schema — you can code against the real JSON before the first request.
Instacart endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
6 hosted MCP tools back the Instacart endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/instacart/departments
/instacart/item
/instacart/search
/instacart/search-nearby
/instacart/stores
/instacart/trending
Endpoint catalog
/instacart/storesFinds Instacart retailer storefronts (grocery stores, warehouse clubs, and other partner retailers) serving a US postal code, each with the identifiers needed to look up its items and search suggestions. Public data sourced from Instacart's own store-discovery API.
Response notes
- `shop_id`, `store_slug` (the store's `slug` field), and `retailer_location_id` from a result are the values [`GET /instacart/item`](instacart-item.md) and [`GET /instacart/search`](instacart-search.md) need. - Results cover every retailer partnered with Instacart in the area, not just grocery — warehouse clubs and specialty retailers are included. - `accepts_ebt`, `saver_store`, and `delivery_eta` are best-effort enrichment fetched after the base store list. A failure fetching either does not fail the request — those fields are simply omitted for the affected stores. Example response: ```json { "code": 200, "msg": "OK", "data": { "postal_code": "94105", "stores": [ { "shop_id": "9501", "retailer_location_id": "53", "retailer_id": "1", "name": "Safeway", "slug": "safeway", "retailer_type": "Grocery - Traditional", "service_type": "delivery", "logo_url": "https://www.instacart.com/assets/domains/warehouse/logo/1/3b7ef435-1d5a-463e-ae62-e4fa2aaab32b.png", "accepts_ebt": true, "delivery_eta": "By 4:45am" } ] } } ```
MCP tool instacart_stores
/instacart/itemReturns a single product's detail at a specific Instacart store: name, size, brand, image, current pricing (with any sale/offer badge), availability, stock level, dietary labels, and nutrition facts. Public data sourced from Instacart's own storefront pages.
Response notes
- `price` is only fully populated once the underlying request has an active store session — this endpoint handles that automatically, but a first call for a given store can take slightly longer while that session is established. - `on_sale` and `offer_label` are only present when the item currently has a promotion. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": "items_53-17830663", "product_id": "17830663", "name": "Lucerne Blended Plain Yogurt", "size": "32 oz", "brand_name": "lucerne", "image_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/large_4978279a-5ed6-4a86-9dc2-67969ae09186.png", "price": { "current_price": 2.99, "regular_price": 3.99, "on_sale": true, "offer_label": "25% off", "pricing_unit": "32 oz" }, "available": true, "stock_level": "inStock", "dietary_labels": ["low_carb", "low_sugar"], "nutrition": [ {"label": "Protein", "value": "7", "unit": "g"}, {"label": "Fat", "value": "6", "unit": "g"}, {"label": "Sugar", "value": "10", "unit": "g"}, {"label": "Calories", "value": "150"} ], "variant_options_summary": "2 total options" } } ```
MCP tool instacart_item
/instacart/searchReturns 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.
Response notes
- Each suggestion's `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). - A genuine zero-match query returns `suggestions: []` with a `200`, not an error. Example response: ```json { "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" } ] } } ```
MCP tool instacart_search
/instacart/search-nearbyReturns Instacart's own search-term autosuggestions for a keyword across every retailer serving a postal code at once, rather than one specific store. Public data sourced from Instacart's own cross-retailer search.
Response notes
- Unlike single-store search, this endpoint does not need any store context — only a postal code and a query. - A genuine zero-match query returns `suggestions: []` with a `200`, not an error. Example response: ```json { "code": 200, "msg": "OK", "data": { "postal_code": "94105", "query": "milk", "suggestions": [ { "term": "milk", "thumbnail_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/thumb_b4aaab37-66cf-46e3-9638-f37987fca803.jpg" }, { "term": "almond milk", "thumbnail_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/thumb_example.jpg" } ] } } ```
MCP tool instacart_search_nearby
/instacart/trendingReturns Instacart's own popular/trending search terms across every retailer serving a postal code -- the same blank-state suggestions shown before a user types anything into the search box. Public data sourced from Instacart's own cross-retailer search.
Response notes
- `terms` does not carry a `relative_url` field (unlike [`GET /instacart/search`](instacart-search.md) and [`GET /instacart/search-nearby`](instacart-search-nearby.md)'s suggestions) — popular terms are not tied to a specific search-results page link. Example response: ```json { "code": 200, "msg": "OK", "data": { "postal_code": "94105", "terms": [ { "term": "kit kat", "thumbnail_url": "https://www.instacart.com/assets/generic_items/autosuggestions/placeholder.png" }, { "term": "wine", "thumbnail_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/thumb_a23cbed9-9122-4850-8d98-453fe6283dad.png" } ] } } ```
MCP tool instacart_trending
/instacart/departmentsReturns a store's department/category taxonomy (Produce, Dairy & Eggs, Bakery, ...) two levels deep -- department and subcategory. Metadata only, does not return products. Public data sourced from Instacart's own storefront navigation.
Response notes
- The taxonomy may include a small number of non-food, promotional or internal groupings alongside real departments (e.g. an "Evergreen VC" entry seen live) — these are passed through as returned rather than filtered, since there is no reliable documented signal to distinguish them from real departments. - This endpoint returns the taxonomy only, not products within a department — Instacart's own paginated category browsing was investigated and is not implemented (see `notes/instacart-maintenance.md`). Example response: ```json { "code": 200, "msg": "OK", "data": { "shop_id": "9501", "departments": [ { "id": "88", "name": "Produce", "slug": "produce", "subcategories": [ {"id": "79", "name": "Fresh Fruits", "slug": "fresh-fruits"}, {"id": "80", "name": "Fresh Vegetables", "slug": "fresh-vegetables"}, {"id": "78", "name": "Herbs", "slug": "herbs"} ] }, { "id": "98", "name": "Dairy & Eggs", "slug": "dairy", "subcategories": [ {"id": "85", "name": "Milk", "slug": "milk"}, {"id": "106", "name": "Cheese", "slug": "cheese"} ] } ] } } ```
MCP tool instacart_departments
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Company coverage
Maplebear Inc. · CART
Instacart is operated by Maplebear Inc. (CART). Crawlora's SEC endpoints take the same company's CIK, so filings, financials, insider transactions and 13F holdings come from the same API key as the Instacart endpoints above.
SEC filings & financials API →How to scrape Instacart
Crawlora's Instacart endpoints return store discovery, product detail, and search as normalized JSON with one API key — no login or account required.
Send a postal code to /instacart/stores for nearby retailers, each with EBT acceptance and a delivery ETA.
Pass a store's shop_id and slug plus a product_id to /instacart/item for live pricing, availability, and nutrition.
Search within one store via /instacart/search, or across every nearby retailer at once via /instacart/search-nearby.
Use /instacart/departments for a store's category taxonomy, or /instacart/trending for popular searches near a postal code.
FAQ
Send a postal code to Crawlora's /instacart/stores endpoint and get nearby retailer storefronts — name, EBT acceptance, delivery ETA — as structured JSON.
No Instacart account or login is required from the caller — only your Crawlora API key.
Yes — /instacart/item returns a product's current price, any active sale, availability, and nutrition facts at a specific store as structured JSON.
Not for general signup. Instacart's Developer Platform API is invite-only, and the average time from an access request to a demo approval and production key is about 30-40 days — there's no instant self-serve path. Crawlora's Instacart endpoints return store discovery, product detail with live pricing, and search data as structured JSON with a single API key, active immediately.