Jewel-Osco APIjewelosco.com ↗
Find Jewel-Osco stores by ZIP code, list current flyer publications, and retrieve advertised deals and prices via 3 structured endpoints.
What is the Jewel-Osco API?
The Jewel-Osco API covers 3 endpoints that let you locate stores by ZIP code, enumerate active flyer publications, and pull the full advertised item list from any publication. The get_weekly_ad_items endpoint returns up to ~470 items per weekly ad, each with price, brand, sale story, disclaimer, and flyer category — paginated and filterable by category label.
curl -X GET 'https://api.parse.bot/scraper/566ef9ec-26ea-4949-9799-9a510b82e198/find_stores?zip_code=60614' \ -H 'X-API-Key: $PARSE_API_KEY'
Finds Jewel-Osco stores near a 5-digit US ZIP code, ordered by distance. One round trip. Only Jewel-Osco banner stores are returned (the store locator also knows sister banners such as Vons or Safeway; those are excluded because their store numbers do not resolve to a Jewel-Osco weekly ad). A ZIP with no Jewel-Osco store within the radius returns an empty stores list with success; locator_total_all_banners still reports how many stores of any banner the locator found, so it can exceed returned_count. Each stores[*].store_id is the value list_weekly_ads accepts. A ZIP the locator does not recognize returns a stale_input error.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of stores the locator returns (1-50), counted across all banners before the Jewel-Osco filter is applied. |
| radius | integer | Search radius in miles, 1-100. |
| zip_coderequired | string | 5-digit US ZIP code, leading zeros preserved. |
{
"type": "object",
"fields": {
"stores": "array of Jewel-Osco stores nearest first; each has store_id (use with list_weekly_ads), name, address, city, state, zip_code, distance_miles (from the ZIP), timezone, has_pickup, has_delivery, local_page_url",
"zip_code": "the ZIP code searched",
"radius_miles": "search radius applied, in miles",
"returned_count": "number of Jewel-Osco stores in stores",
"locator_total_all_banners": "number of stores of any banner the locator found within the radius (may exceed returned_count)"
},
"sample": {
"data": {
"stores": [
{
"city": "Chicago",
"name": "Jewel-Osco",
"state": "IL",
"address": "424 W Division St",
"store_id": "3546",
"timezone": "America/Chicago",
"zip_code": "60610",
"has_pickup": true,
"has_delivery": true,
"distance_miles": 1.07,
"local_page_url": "https://local.jewelosco.com/il/chicago/424-w-division-st.html"
},
{
"city": "Chicago",
"name": "Jewel-Osco",
"state": "IL",
"address": "2940 N Ashland Ave",
"store_id": "3441",
"timezone": "America/Chicago",
"zip_code": "60657",
"has_pickup": true,
"has_delivery": true,
"distance_miles": 1.73,
"local_page_url": "https://local.jewelosco.com/il/chicago/2940-n-ashland-ave.html"
}
],
"zip_code": "60614",
"radius_miles": 50,
"returned_count": 2,
"locator_total_all_banners": 10
},
"status": "success"
}
}About the Jewel-Osco API
Store Lookup
The find_stores endpoint accepts a 5-digit zip_code and returns an array of nearby Jewel-Osco stores sorted by distance. Each store object includes store_id, name, address, city, state, zip_code, and distance. The optional radius parameter (1–100 miles) and limit parameter (1–50) control search scope. Only Jewel-Osco banner stores are returned; sister banners like Vons or Safeway that the underlying locator knows about are filtered out, so locator_total_all_banners may exceed returned_count.
Weekly Ad Publications
list_weekly_ads takes a store_id from find_stores and returns all flyer publications currently active for that store. Beyond the standard Weekly Ad, specialty publications — such as organics guides or monthly specialty flyers — appear here when active. Each publication entry includes publication_id, name, publication_type, valid_from, and valid_to in ISO-8601 with the store's local timezone offset. The publication_id is what you pass to the items endpoint.
Advertised Items and Deals
get_weekly_ad_items fetches every item in a publication and returns them ordered by flyer page then item id. Fields per item include item_id, name, brand, description, sale_story, disclaimer, price (numeric or null), and price_text. The response also surfaces available_categories — all category labels present in that publication. Pass a category string (case-insensitive, e.g. Meat & Seafood) to filter results. Pagination is controlled via page (1-based) and page_size (1–200); has_more and total_items tell you whether additional pages exist.
The Jewel-Osco API is a managed, monitored endpoint for jewelosco.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jewelosco.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official jewelosco.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a weekly deal tracker that alerts users when specific grocery items go on sale at their nearest Jewel-Osco.
- Aggregate advertised prices across multiple store locations to compare deal availability by region.
- Filter
get_weekly_ad_itemsby category (e.g. 'Produce') to build a department-specific deal digest. - Track price trends over time by recording
priceandprice_textfields from successive weekly ad publications. - Determine flyer validity windows using
valid_fromandvalid_toto know exactly when a deal expires. - Identify which specialty publications (organics, seasonal) are active at a given store via
list_weekly_ads. - Power a ZIP-code-based store finder widget using the
find_storesdistance-ordered results.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Jewel-Osco have an official developer API?+
What does `get_weekly_ad_items` return, and how do I narrow results to one department?+
name, brand, price, price_text, sale_story, and disclaimer. Pass the category parameter (case-insensitive) with a value from the available_categories array in the same response to restrict results to a single department, such as 'Bakery' or 'Meat & Seafood'.Why might `returned_count` be lower than `locator_total_all_banners` in a `find_stores` response?+
find_stores endpoint filters to Jewel-Osco stores only, so locator_total_all_banners reflects everything the locator found within the radius while returned_count shows only the Jewel-Osco subset. The limit parameter also caps results before that filter is applied, which can further reduce returned_count.Does the API expose individual product detail pages, nutrition facts, or loyalty card pricing?+
How current is the weekly ad data, and can I retrieve past publications?+
valid_from and valid_to fields. The API does not expose an archive of past flyers — only publications currently listed for a given store_id are returned by list_weekly_ads. You can fork it on Parse and revise to build a historical archive by storing results over time.