Publix product search
Search Publix products by keywords or browse a category, for one store, with the shop's filters (values in facets) and eight sorts. Each product: id, item code, name, brand, size, link, images, price and price text where the shop shows them (publix.com prices only items on promotion; price_source says where a price is from, price_note explains), original price, savings, sale and price-reduction flags, promotion, coupon flag, aisle location, categories, description and alerts, plus raw. Pass next_page back as page; null on the last page. With online=true (needs q) the response adds online: the same store's Publix online ordering results for the keywords with a price for every item (online prices, which Publix states are higher than in-store), size, unit price, deal, availability and stock level, the online store's number, name and address, the shopping method and fetched_at; it pages with the same page and limit.
Every response includes credits_used: the credits this call cost.
Part of the Publix API: 6 endpoints with prices, use cases and example responses.
Parameters
| name | type | description |
|---|---|---|
q | string | Keywords. Optional when category is set. Example: milk |
category | string | Category id from /publix/v1/categories, or a category link. |
filters | string | Filters as name::value pairs from a search's facets (the filter value), comma-separated, e.g. onSale::true. |
sort | relevance | best_seller | on_sale | name_asc | name_desc | most_popular | savings | most_viewed | Order. |
store_id | string | Publix store number (default 1083; see /publix/v1/stores). Example: 1651 |
page | integer | Page number. Example: 2 |
limit | integer | Results per page (default 24, max 60). |
online | boolean | true: also return this store's online ordering prices for the keywords in online (needs q). Example: true |
online_method | delivery | pickup | Shopping method for the online prices (default delivery; pickup prices have matched delivery so far). |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/publix/v1/search?q=milk&store_id=1651" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/publix/v1/search",
params={"q": "milk", "store_id": "1651"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/publix/v1/search");
url.searchParams.set("q", "milk");
url.searchParams.set("store_id", "1651");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).
Example response (real call, trimmed: lists cut to 2 items, long text shortened, raw left out)
{"query": "milk","category": null,"store_id": 1651,"sort": "relevance","applied_filters": [],"corrected_query": null,"total": 151,"page": 1,"count": 24,"items": [{"product_id": "RIO-PCI-113569","item_code": 70800,"name": "Publix Milk Whole Grade a","brand": "Publix","size": "1 gal (3.78L)","url": "https://www.publix.com/pd/publix-milk-whole-grade-a/RIO-PCI-113569","image": "https://images.publixcdn.com/pct/images/products/70000/070800-600x600-A.jpg","thumbnail": "https://images.publixcdn.com/pct/images/products/70000/070800-75x75-A.jpg","price_text": null,"price": null,"original_price_text": null,"saving": null,"on_sale": false,"temporary_price_reduction": false,"promo_type": null,"promo": null,"promo_conditions": null,"promo_valid_thru": null,"promo_savings": 0,"has_coupon": false,"aisle": ["Rear Left - Milk"],"store_id": 1651,"categories": ["Dairy/Milk and Milk Alternatives"],"description": null,"catering": false,"lead_time": null,"party_size": null,"alert": null},{"product_id": "RIO-PCI-113281","item_code": 70806,"name": "Publix Milk 2% Milkfat, Reduced Fat Grade a","brand": "Publix","size": "1 package","url": "https://www.publix.com/pd/publix-milk-2-milkfat-reduced-fat-grade-a/RIO-PCI-113281","image": "https://images.publixcdn.com/pct/images/products/70000/070806-600x600-A.jpg","thumbnail": "https://images.publixcdn.com/pct/images/products/70000/070806-75x75-A.jpg","price_text": null,"price": null,"original_price_text": null,"saving": null,"on_sale": false,"temporary_price_reduction": false,"promo_type": null,"promo": null,"promo_conditions": null,"promo_valid_thru": null,"promo_savings": 0,"has_coupon": false,"aisle": ["Rear Left - Milk"],"store_id": 1651,"categories": ["Dairy/Milk and Milk Alternatives"],"description": null,"catering": false,"lead_time": null,"party_size": null,"alert": null},"… 22 more"],"facets": [{"name": "promoType","label": "promoType","values": [{"value": "Multi","label": "Multi","count": 13,"filter": "promoType::Multi"},{"value": "SingleFeatured","label": "SingleFeatured","count": 13,"filter": "promoType::SingleFeatured"}]},{"name": "facetWeeklyAd","label": "Weekly Ad","values": [{"value": "true","label": "true","count": 3,"filter": "facetWeeklyAd::true"}]},"… 14 more"],"categories": [{"Name": "Dairy","FauxTaxonomy": "Dairy","ID": "bcbd97a0-4588-411e-9f91-9245e6f350d0","ProductCount": 151,"IsCurrentCategory": false,"ImageUrl": "https://www.publix.com/cms/images/publix/categories/dairy/dairy.png","Children": [{"ID": "3ce732f2-c55f-47b2-8c8e-4be96dfbcc06","Name": "Milk and Milk Alternatives","FauxTaxonomy": "Dairy/Milk and Milk Alternatives","ProductCount": 151,"Children": null}]}],"parent_category": {"Name": "Dairy","FauxTaxonomy": "Dairy","ID": "bcbd97a0-4588-411e-9f91-9245e6f350d0","IsCurrentCategory": false},"next_page": 2,"cached": false,"credits_used": 1}