To get Publix weekly ad and BOGO data for a specific store, use Scavio's Publix API. POST /api/v1/publix/stores turns a ZIP code into Publix store numbers, and POST /api/v1/publix/weekly-ad takes one store_id and returns that store's whole current weekly ad, about 700 deals, each with its deal type (BOGO, Buy 2 Get 1, multi-buy, sale price, percent off), the "save up to" amount, the price where Publix prints one, and the dates. Each call costs 1 credit, so a store's full weekly ad costs $0.001 on the Growth plan.
Publix runs its weekly ad store by store, on two weekly cycles, and its BOGO prices are not the same in every state. So the steps below start with the store. Every response is a trimmed capture from November 13, 2026, taken between 09:46 and 09:56 UTC (4:46 to 4:56 am Eastern). Prices are dollars: 6.89 is $6.89. Images are trimmed from every sample.
Step 1: Find the store
curl -s https://api.scavio.dev/api/v1/publix/stores \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"zip": "33101", "limit": 10}'ZIP 33101 in Miami returned 10 stores within 3.55 miles, nearest first. The first one, with hours cut to one day and the services list shortened:
{
"zip": "33101",
"radius_miles": 50,
"count": 10,
"stores": [
{
"store_id": 1614,
"name": "3 Miami Central",
"short_name": "3 MiamiCentral",
"type": "supermarket",
"address": { "street": "601 NW 2nd Ave", "city": "Miami", "state": "FL", "zip": "33136" },
"phone": "305-374-6806",
"hours": [{ "date": "2026-11-13", "open": "07:00", "close": "22:00", "is_closed": false, "is_open_24_hours": false, "note": null }],
"time_zone": "EST",
"departments": ["Floral", "Meat", "Produce", "Publix Bakery", "Publix Deli", "Seafood"],
"services": ["Pharmacy", "In-Store Pickup", "Wine & Beer", "Sushi", "Instacart", "Curbside"],
"pharmacy": { "phone": "305-341-9629", "hours": [{ "date": "2026-11-13", "open": "09:00", "close": "21:00", "is_closed": false, "is_open_24_hours": false, "note": null }] },
"liquor_store": null,
"latitude": 25.780117,
"longitude": -80.197358,
"distance_miles": 0.09,
"weekly_ad_break_day": "Thursday",
"opening_date": "2021-08-19",
"closing_date": null
}
]
}store_id is what every other endpoint takes. weekly_ad_break_day is the day the store's ad starts: Thursday for the Miami stores, Wednesday for the Charlotte stores we looked up with {"city": "Charlotte", "state": "NC", "limit": 5}, which returned Shops at Southline (1453) first. You can also pass one store_id, a radius_miles up to 100 and a limit up to 30. An unknown store number answers 404. 1 credit.
Step 2: Pull the store's weekly ad
curl -s https://api.scavio.dev/api/v1/publix/weekly-ad \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store_id": "1614"}'Miami Central's ad ran November 12 to 18 and had 691 deals in one response: 229 BOGO, 20 Buy 2 Get 1, 86 multi-buys, 316 sale prices, 5 percent-off deals and 35 others. Three of them:
{
"store": { "id": 1614, "name": "3 Miami Central" },
"ad": { "start_date": "2026-11-12", "end_date": "2026-11-18" },
"total": 691,
"count": 691,
"applied_filters": {},
"items": [
{
"id": "97ff6748-dfff-45dc-a04e-f5ba0f7bec33",
"item_code": null,
"base_product_id": null,
"title": "Lean Ground Beef 7% Fat",
"description": "3 lbs or More pkg.",
"brand": "Publix",
"department": "Meat",
"categories": ["meat"],
"savings_text": "$6.89 lb",
"additional_savings": null,
"save_up_to": null,
"deal_type": "price",
"price": 6.89,
"price_unit": "lb",
"bundle": null,
"min_quantity": null,
"fine_print": null,
"stacked_with_coupon": false,
"promotion": "Weekly Ad",
"valid_from": "2026-11-12",
"valid_to": "2026-11-18"
},
{
"id": "046f9057-0c03-4694-a91c-15b5149962d6",
"title": "Publix Hummus",
"description": "Free item of equal or lesser price.\nLocated in the Deli, 10-oz cont.",
"brand": "Publix",
"department": "Deli",
"categories": ["deli", "bogo"],
"savings_text": "Buy 1 Get 1 FREE",
"save_up_to": "SAVE UP TO $4.15",
"deal_type": "bogo",
"price": null,
"bundle": null,
"promotion": "Weekly Ad",
"valid_from": "2026-11-12",
"valid_to": "2026-11-18"
},
{
"id": "405abffb-7d59-408b-b366-5f772b29def4",
"title": "Kraft Stove Top Stuffing Mix",
"description": "6-oz box",
"brand": "Kraft",
"department": "Stuffing/Potatoes",
"savings_text": "2 for $4.00",
"save_up_to": "SAVE UP TO $2.90 ON 2",
"deal_type": "multi",
"price": null,
"bundle": { "quantity": 2, "price": 4 },
"promotion": "Weekly Ad",
"valid_from": "2026-11-12",
"valid_to": "2026-11-18"
}
]
}How to read it:
deal_typesorts the deals:bogo,b2g1,multi,price,percent_offorother(Buy 2 Get 2 Free, gift-card coupons).savings_textkeeps the wording Publix shows.priceis a number only when the deal is a plain price, like the ground beef at $6.89 a pound. A BOGO hasprice: null; itssave_up_tois the most the free item saves, as Publix prints it. It is a ceiling across the sizes the deal covers, not one product's price. 195 of the 229 BOGO lines had a dollar amount; the rest had none, and a few deals carry a label such as "your choice" in that field instead of an amount. Multi-buys put the deal inbundle.valid_fromandvalid_toare per deal. 76 of the 691 ran November 5 to 18, 64 of them taggedpromotion"Extra Savings", and a gas-card coupon ran only November 12 to 15.item_codeis set on 266 of the 691 deals, mostly single products; ad lines that cover a brand or a range have none. Use search (Step 5) to price the individual products.
Filter in the same call with department (one of the 88 values in departments), query (text in the title, description or brand) or bogo_only. 1 credit.
Step 3: Get just the BOGO list
curl -s https://api.scavio.dev/api/v1/publix/weekly-ad \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store_id": "1825", "bogo_only": true}'At Publix at Summerhill in Atlanta, bogo_only kept 259 of the ad's 738 deals: 239 Buy 1 Get 1 Free and 20 Buy 2 Get 1 Free. One of the Buy 2 Get 1 deals:
{
"store": { "id": 1825, "name": "Publix at Summerhill" },
"ad": { "start_date": "2026-11-11", "end_date": "2026-11-17" },
"total": 738,
"count": 259,
"applied_filters": { "bogo_only": true },
"items": [
{
"id": "6e6d4774-ba56-457e-acdd-948f23f4f813",
"item_code": null,
"title": "Ruffles Potato Chips or Doritos Tortilla Chips",
"description": "5.5 to 10.75-oz bag\n(Excluding Baked, Simply, and Party Size)",
"brand": "Ruffles",
"department": "Potato Chips",
"savings_text": "Buy 2 Get 1 FREE",
"save_up_to": "SAVE UP TO $5.49 ON 3",
"deal_type": "b2g1",
"price": null,
"promotion": "Weekly Ad",
"valid_from": "2026-11-11",
"valid_to": "2026-11-17"
}
]
}The Atlanta ad started a day earlier than Miami's and ends a day earlier. That is the two-cycle schedule from Publix's weekly ad FAQ: "For ads effective Wednesday through Tuesday, we post around 12 a.m. (midnight) Eastern Time Wednesday morning. For ads effective Thursday through Wednesday, we post around 12 a.m. (midnight) Eastern Time on Thursday morning." Poll each store just after its start day begins; the Thanksgiving-week ads start Wednesday, November 18 and Thursday, November 19, 2026. 1 credit.
Step 4: Compare the same week across stores and states
Run Step 2 for each store and match deals by title and size line. We did it for four stores on November 13:
| BOGO deal | Miami Central, FL (1614) | Mary Brickell Village, FL (1009) | Summerhill, GA (1825) | Shops at Southline, NC (1453) |
|---|---|---|---|---|
| Deals in the ad / BOGOs | 691 / 229 | 726 / 252 | 738 / 239 | 730 / 240 |
| Jones Dairy Farm sausage patties | $6.19 | $6.19 | $5.99 | $4.39 |
| Duke's mayonnaise | $7.67 | $7.67 | $6.39 | $6.53 |
| Fresh Express chopped kit | $5.65 | $5.65 | $5.65 | $5.49 |
| Kerrygold Pure Irish butter | $5.96 | $5.96 | $5.29 | $5.44 |
The dollar figures are each deal's printed "save up to" amount. The two Miami stores, 1.06 miles apart, matched on all 173 BOGO deals they shared, while Miami Central was higher than the Charlotte store on 93 of the 164 they shared, the same on 67 and lower on 4. The chart is in the best Publix weekly ad and BOGO APIs. Four calls, 4 credits.
Step 5: Price each product with search
curl -s https://api.scavio.dev/api/v1/publix/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "duke'\''s mayonnaise", "store_id": "1614", "bogo": true}'Search returns products, not ad lines, priced at the store you pass. With bogo: true, 16 products matched at Miami Central. One, URL and category trimmed:
{
"query": "duke's mayonnaise",
"store": { "id": 1614, "name": "3 Miami Central" },
"total": 16,
"page": 1,
"page_size": 48,
"total_pages": 1,
"count": 16,
"sort": "relevance",
"applied_filters": { "bogo": true },
"items": [
{
"item_code": 3776,
"base_product_id": "RIO-PCI-101704",
"title": "Duke's Mayonnaise, Real, Smooth & Creamy",
"brand": "Duke's",
"size": "30 fl oz (0.887 l)",
"aisle": "Aisle 2 - Condiments & Sauces",
"on_sale": true,
"price": 7.67,
"price_unit": null,
"regular_price": null,
"price_text": "$7.67",
"regular_price_text": null,
"promo": {
"type": "bogo",
"message": "Buy 1 Get 1 Free",
"conditions": "of equal or lesser price",
"savings": 7.67,
"valid_from": "2026-11-12",
"valid_through": "2026-11-18"
},
"has_coupon": false,
"is_order_ahead": false
}
]
}A BOGO product returns the price of one. The same jar was $5.79 at the Atlanta store and $5.99 in Charlotte, below the $6.39 and $6.53 those stores' ads printed as "save up to" for Duke's, so use search when you need each product's price. A sale that is not a BOGO also returns the crossed-out regular price. From {"query": "chicken", "store_id": "1614", "on_sale": true}, which matched 18 products:
{
"item_code": 99649,
"title": "Publix Chicken Breast Tenderloins,boneless Skinless, 99% Fat Free,usda Grade a",
"brand": "Publix",
"aisle": "Meat",
"on_sale": true,
"price": 5.49,
"price_unit": "lb",
"regular_price": 7.29,
"price_text": "$5.49/lb",
"regular_price_text": "$7.29/lb",
"promo": { "type": "single", "message": "Save $1.80/lb", "conditions": null, "savings": 1.8, "valid_from": "2026-11-12", "valid_through": "2026-11-18" }
}Without on_sale, most results have no price at all: on the first page of 48 results for "chicken" at the same store, 38 came back with price: null, because Publix shows prices online only "for items currently on sale and those available for purchase through In-Store Pickup" (Publix FAQ). Null means Publix showed no price, not zero and not "not sold". 48 results a page, page for more, and sort relevance, featured, name_asc, name_desc, popularity, savings_amount or most_viewed; brand filters to one brand. 1 credit.
Step 6: Read one product
curl -s https://api.scavio.dev/api/v1/publix/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item_code": "3776", "store_id": "1614"}'Product returns the same card as search plus nutrition facts. Trimmed to the fields search does not return, with all but three nutrients cut:
{
"item_code": 3776,
"title": "Duke's Mayonnaise, Real, Smooth & Creamy",
"price": 7.67,
"short_description": null,
"lead_time": null,
"serves": null,
"calories": null,
"nutrition": [
{
"serving_size_value": 14,
"serving_size_unit": "g",
"household_serving_size": "1",
"household_serving_unit": "tbsp",
"servings_per_container": "60",
"nutrients": [
{ "name": "Calories", "amount": 100, "unit": "cal", "value": "100cal", "daily_value_percent": null },
{ "name": "Total Fat", "amount": 12, "unit": "g", "value": "12g", "daily_value_percent": 15 },
{ "name": "Saturated Fat", "amount": 2, "unit": "g", "value": "2g", "daily_value_percent": 10 }
]
}
],
"store": { "id": 1614, "name": "3 Miami Central" }
}Publix does not publish UPCs, ingredients, allergens or reviews online, so product has none. An unknown item code answers 404 and is charged. 1 credit.
Step 7: Browse a department or category
curl -s https://api.scavio.dev/api/v1/publix/categories \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"parent_id": "2fe0fdd9-56a9-44b4-885f-a12ed584fed4"}'Categories returns the tree (382 nodes without a filter); with the Meat department's id it returned 15 categories, from Bacon and Beef to Turkey and Plant Based Alternatives, each with id, name, url, parent_id and level. Pass any of those ids, or a department id, to category:
curl -s https://api.scavio.dev/api/v1/publix/category \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"category_id": "2fe0fdd9-56a9-44b4-885f-a12ed584fed4", "store_id": "1614", "on_sale": true}'Meat on sale at Miami Central was 238 products, 48 a page, in the same card shape as search, with the same sorts and filters. The Grocery department with bogo: true was 751 products. 1 credit each.
Step 8: Extra Savings, digital coupons and savings search
curl -s https://api.scavio.dev/api/v1/publix/extra-savings \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store_id": "1614"}'Extra Savings are Publix's temporary price reductions. Miami Central had 678, for the period November 5 to 18:
{
"store": { "id": 1614, "name": "3 Miami Central" },
"period": { "start_date": "2026-11-05", "end_date": "2026-11-18" },
"count": 678,
"items": [
{
"id": "9af1b98f-f12e-41ae-80ff-757ce81eefdc",
"base_product_id": "RIO-PCI-625335",
"title": "Kewpie Japanese Style Mayonnaise",
"size": "12 fl oz (355 ml)",
"brand": "Kewpie",
"categories": ["grocery"],
"savings_text": "$0.74",
"savings": 0.74,
"additional_savings": null,
"final_price": 5.35,
"min_quantity": 1,
"url": "https://www.publix.com/pd/kewpie-japanese-style-mayonnaise/RIO-PCI-625335"
}
]
}final_price is the reduced price and savings the amount off, so the price before the reduction is their sum, $6.09 here. 66 of the 678 have a min_quantity above 1; for those, final_price is passed through as Publix lists it and can be the price for that quantity. Coupons, with {"store_id": "1614"}, returned 103 digital coupons, terms trimmed:
{
"store": { "id": 1614, "name": "3 Miami Central" },
"count": 103,
"items": [
{
"id": 8902699,
"title": "Save $3.00 on any ONE (1) Abreva product",
"description": "Save $3.00 on any ONE (1) Abreva product",
"brand": "Abreva",
"savings_text": "Save $3.00",
"value": 3,
"min_quantity": 1,
"limit_per_transaction": 1,
"categories": ["health-and-nutrition"],
"valid_from": "2026-11-08",
"valid_to": "2026-12-05",
"terms": "Terms & Conditions: Redeemable at food, drug and mass merchandise stores. CONSUMER: Limit ..."
}
]
}Coupons are listed as any visitor sees them, never clipped, and no account is used. To search all three feeds at once, savings search with {"query": "mayonnaise", "store_id": "1614"} returned 5 deals, each tagged with saving_type: Duke's and two more weekly-ad lines, and Blue Plate ($7.19) and Kewpie ($5.35) from Extra Savings. 1 credit each.
Step 9: Deli order-ahead prices and suggestions
curl -s https://api.scavio.dev/api/v1/publix/order-ahead \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store_id": "1614"}'Order-ahead items are the other thing Publix prices online. The Pub Sub menu at Miami Central had 66 items, 60 a page; section: "all" returns the whole deli and bakery catalog. One sub, URL and category trimmed:
{
"item_code": 90355,
"title": "Publix Chicken Tender Sub",
"description": "Our famous hand-breaded chicken tenders, with provolone, lettuce, and tomato.",
"aisle": "Deli",
"on_sale": false,
"price": 12.09,
"price_text": "$12.09",
"is_order_ahead": true,
"short_description": "Hot Chicken Tenders and Choice of Cheese",
"lead_time": "Ready as soon as 30 minutes",
"serves": null,
"calories": "450 Cal - 1955 Cal/Sub",
"pay_online": true
}Suggestions, with {"query": "turk", "store_id": "1614"}, returned what the search box shows: 10 searches from "turkey" and "turkey breast" to "turkey pepperoni", plus 4 products with item codes, led by the Butterball whole turkey breast (79043). 1 credit each.
Step 10: Build a weekly deals feed
The ad changes once a week, so one call per store per week is the whole job. Keep each run with the ad dates and the time you fetched it:
import time, requests
API = "https://api.scavio.dev/api/v1/publix"
HEADERS = {"Authorization": "Bearer YOUR_SCAVIO_API_KEY"}
STORES = ["1614", "1825", "1453"] # Miami, Atlanta, Charlotte
def weekly_ad(store_id):
for attempt in range(3):
r = requests.post(f"{API}/weekly-ad", headers=HEADERS, timeout=120,
json={"store_id": store_id, "bogo_only": True})
if r.status_code == 200:
return r.json()["data"]
time.sleep(20) # 429 or 502: wait and retry, failed calls are not charged
return None
for store_id in STORES:
ad = weekly_ad(store_id)
if not ad:
continue
for it in ad["items"]:
print(store_id, ad["ad"]["start_date"], it["deal_type"], it["title"], it["save_up_to"])Run one request at a time. Three stores once a week is 3 credits; add a bogo: true search for the products you track to record each one's price.
Every Publix endpoint
| Endpoint | What it returns | Credits | Cost per 1,000 calls on Growth |
|---|---|---|---|
/api/v1/publix/stores | Stores near a ZIP or in a city, or one store, with the ad start day | 1 | $1.00 |
/api/v1/publix/weekly-ad | The store's whole current weekly ad, filterable to BOGO | 1 | $1.00 |
/api/v1/publix/search | 48 products a page at a store, sale and BOGO prices, six sorts | 1 | $1.00 |
/api/v1/publix/product | One product by item code with nutrition facts | 1 | $1.00 |
/api/v1/publix/category | A department's or category's products at a store | 1 | $1.00 |
/api/v1/publix/categories | The category tree or one subtree | 1 | $1.00 |
/api/v1/publix/extra-savings | The store's Extra Savings with final price and period | 1 | $1.00 |
/api/v1/publix/coupons | The store's digital coupons, read-only | 1 | $1.00 |
/api/v1/publix/savings-search | One keyword across weekly ad, Extra Savings and coupons | 1 | $1.00 |
/api/v1/publix/order-ahead | Deli and bakery order-ahead menu with store prices | 1 | $1.00 |
/api/v1/publix/suggestions | Search-box suggestions and up to 4 products | 1 | $1.00 |
Failed upstream calls are retried and not charged; a not-found is charged.
What about an official Publix API?
There is none to sign up for. Publix's business partner page offers resources "to support our approved partners" in real estate, supply and construction, not a data feed, and its Website Policies have no developer section. Delivery and curbside orders run on delivery.publix.com, an Instacart storefront whose pricing policy says "Publix delivery and curbside pickup item prices are higher than item prices in physical store locations", so a delivery price is not an in-store price. The Instacart Developer Platform is built for shopping lists, recipes and checkout handoff, not for Publix's weekly ad.
Getting started
- Create a Scavio account: 50 free credits, no card, enough for a stores call and 49 weekly ads.
- Call stores with your ZIP, or a city and state, and keep the
store_idvalues. - Pull each store's weekly ad once its start day begins, with
bogo_onlyif you want only the BOGO list. - Price the products you care about with search and
bogo: trueoron_sale: true. - Try any call first in the playground.
Reference: Publix API overview · weekly ad docs · stores docs · search docs · the best Publix weekly ad and BOGO APIs · does Publix raise prices before a BOGO? · how to get ALDI prices by store · how to get Fred Meyer prices by store · Kroger API
Frequently asked questions
Does Publix have an API?
Publix does not publish a public developer API or key program; its business-partner pages serve suppliers and real-estate partners. Scavio's Publix API returns a store's weekly ad, BOGO deals, search results with sale prices, Extra Savings, digital coupons, deli order-ahead prices and store details as JSON, 1 credit a call.
When does the Publix weekly ad change?
Once a week, on one of two cycles. Publix's FAQ says ads effective Wednesday through Tuesday post around midnight Eastern on Wednesday morning, and ads effective Thursday through Wednesday post around midnight on Thursday. In our check, Miami stores ran Thursday, November 12 to Wednesday, November 18, 2026, and Atlanta and Charlotte stores Wednesday, November 11 to Tuesday, November 17. The stores endpoint returns each store's start day as weekly_ad_break_day.
Why doesn't Publix show prices online for every item?
Publix's FAQ says "Pricing is only displayed for items currently on sale and those available for purchase through In-Store Pickup at www.publix.com." A regular item that is not on a deal has no price on publix.com, so Scavio returns price as null for it rather than a guess.
Do Publix BOGO rules differ by state?
The weekly ad does not say. Every BOGO line we pulled in Florida, Georgia and North Carolina carried the same text, "Free item of equal or lesser price.", and none stated whether a single BOGO item rings up at half price. Shoppers on r/publix report that it does in some states and not in Florida; ask your store before you plan on it.
Do Publix's terms allow automated data collection?
Publix's Terms of Use license its websites and apps "for your personal, noncommercial use only" and say users agree not to "access or use the Services by means of any automated program, expert system, electronic agent or 'bot' except for general purpose search engines" or to "scrape, copy, republish, license, or sell the information or Materials on the Services" (last updated 6/30/2025). This is not legal advice; check the current terms for your use case.