Discover/Safeway API
live

Safeway APIsafeway.com

Look up Safeway store locations by ZIP, search the grocery catalog, and retrieve real-time product prices, promotions, and nutrition data via a clean REST API.

Endpoint health
verified 2h ago
find_stores
search_products
get_product
get_similar_products
4/4 passing latest checkself-healing
Endpoints
4
Updated
4h ago

What is the Safeway API?

The Safeway API exposes 4 endpoints covering store discovery, product search, product detail, and similar-product recommendations across Safeway's US grocery catalog. Starting with find_stores, you pass a 5-digit ZIP code and get back a ranked list of nearby stores — each carrying a store_id that anchors every subsequent price and inventory lookup. Product responses include current price, base price, active promotion text, unit price, stock status, and structured nutrition facts.

This call costs5 credits / call— charged only on success
Try it
5-digit US ZIP code, leading zeros preserved.
api.parse.bot/scraper/e9841e3f-1253-44ee-b374-04495ddf1123/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/e9841e3f-1253-44ee-b374-04495ddf1123/find_stores?zip_code=94611' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 4 totalmissing one? ·

Lists Safeway-banner stores that serve a US ZIP code (in-store shopping, pickup, and delivery), nearest first with distance in miles. One round trip. Each row carries the store_id that search_products and get_product accept; the channels array tells which fulfillment modes that store offers for the ZIP. A ZIP with no serving stores returns an empty stores array.

Input
ParamTypeDescription
zip_coderequiredstring5-digit US ZIP code, leading zeros preserved.
Response
{
  "type": "object",
  "fields": {
    "count": "number of distinct stores returned",
    "stores": "array of store records: store_id (numeric string, use with search_products/get_product), banner, address, city, state, zip_code, distance_miles (number), timezone, local_page_url, division, channels (array of instore|pickup|delivery)",
    "zip_code": "the ZIP code that was queried"
  },
  "sample": {
    "data": {
      "count": 2,
      "stores": [
        {
          "city": "Oakland",
          "state": "CA",
          "banner": "Safeway",
          "address": "2096 Mountain Blvd",
          "channels": [
            "instore",
            "pickup"
          ],
          "division": "Norcal",
          "store_id": "654",
          "timezone": "America/Los_Angeles",
          "zip_code": "94611",
          "distance_miles": 0.65,
          "local_page_url": "https://local.safeway.com/safeway/ca/oakland/2096-mountain-blvd.html"
        },
        {
          "city": "Oakland",
          "state": "CA",
          "banner": "Safeway",
          "address": "5100 Broadway",
          "channels": [
            "instore",
            "pickup",
            "delivery"
          ],
          "division": "Norcal",
          "store_id": "3132",
          "timezone": "America/Los_Angeles",
          "zip_code": "94611",
          "distance_miles": 2.49,
          "local_page_url": "https://local.safeway.com/safeway/ca/oakland/5100-broadway.html"
        }
      ],
      "zip_code": "94611"
    },
    "status": "success"
  }
}

About the Safeway API

Store Discovery and Fulfillment Context

The find_stores endpoint accepts a single zip_code parameter and returns an array of Safeway-banner locations sorted by distance in miles. Each store record includes store_id, address fields, and a channels array indicating which fulfillment modes — in-store, pickup, delivery — are available at that location. The store_id value is the key input for all product-facing endpoints; prices and stock levels are store-specific and will differ between locations.

Product Search and Catalog

The search_products endpoint takes a free-text query plus either a store_id or zip_code, and returns paginated product summaries. Each result includes product_id, upc, name, price (current selling price in USD), base_price, price_per_unit, active promotion_text and promotion end date, size, in_stock, department and aisle placement, and an image URL. Page size is capped at 30 results per call; the has_more boolean and total_results count let you walk through additional pages using the page parameter.

Product Detail and Nutrition Data

The get_product endpoint returns the full record for a single product_id at a given store. On top of the fields available in search results, it adds ingredients, description, directions, warnings (allergen text), health_claims, and a nutrition object containing a full nutrition facts panel with servingDetails, dailyValue, nutrient arrays, and footNote. This makes it suitable for any use case that needs label-level data rather than just catalog metadata.

Similar Product Recommendations

The get_similar_products endpoint returns the site's recommended related products for a given product_id — the same shelf shown on a product detail page. Each entry in the products array carries the same price, promotion, size, stock, and placement fields as search results. Up to approximately 12 products are returned per call, all priced for the specified store.

Reliability & maintenanceVerified

The Safeway API is a managed, monitored endpoint for safeway.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when safeway.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 safeway.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.

Last verified
2h ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a grocery price tracker that monitors price and base_price changes for a watchlist of products across multiple store locations.
  • Power a nutrition comparison tool using the nutrition facts panel and ingredients fields returned by get_product.
  • Create a store-finder feature for a delivery app using find_stores to surface nearby locations and their available channels (pickup, delivery, in-store).
  • Identify active deals by filtering search_products results where promotion_text is non-null and checking the promotion end date.
  • Populate a shopping cart suggestion feature using get_similar_products to surface related items with current store-specific pricing.
  • Aggregate unit price (price_per_unit) data across product categories to build a per-unit cost comparison tool for budget shoppers.
  • Index Safeway's catalog for a third-party grocery search app, paginating through search_products results using page and has_more.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does Safeway offer an official public developer API?+
Safeway does not publish a public developer API or API documentation for external use. There is no official key-based program available to third-party developers.
What does get_product return beyond what search_products already includes?+
In addition to the price, promotion, size, and placement fields shared with search results, get_product adds full nutrition facts (servingDetails, dailyValue, nutrient arrays, footNote), ingredients text, product description, directions, warnings (allergen statements), and health claims. The nutrition object is only present in get_product responses, not in search or similar-product results.
Are prices and stock levels the same across all stores?+
No — every product endpoint (search_products, get_product, get_similar_products) returns data tied to a specific store. Prices, promotions, and in_stock values can differ between locations. You need to supply either a store_id from find_stores or a zip_code so the API can resolve which store's data to return.
Does the API cover weekly ad circulars or digital coupon data?+
Not currently. The API covers product-level promotions (promotion_text and end date) embedded in search and detail responses, but does not expose standalone weekly ad pages or a browsable digital coupon catalog. You can fork this API on Parse and revise it to add an endpoint targeting Safeway's weekly ad or coupon data.
Is there a way to browse products by department or aisle rather than keyword search?+
Not currently. The search_products endpoint requires a text query and does not accept a department or aisle filter as a standalone input. Department and aisle fields appear on returned products but cannot be used as search facets. You can fork this API on Parse and revise it to add a category-browse endpoint.
Page content last updated . Spec covers 4 endpoints from safeway.com.
Related APIs in Food DiningSee all →