Lozo APIlozo.com ↗
Search Lozo's grocery coupon database by brand, keyword, or category. Returns discount amounts, descriptions, brand associations, and direct source links.
What is the Lozo API?
The Lozo Coupons API exposes one endpoint — search_coupons — that queries Lozo's full grocery coupon database and returns up to 22 coupon records per page, each carrying 9 structured fields including discount amount, discount symbol, associated brands, categories, and a direct source URL. You can filter by free-text query (brand name or product keyword), by top-level category, or combine both parameters to narrow results across Lozo's entire active coupon inventory.
curl -X POST 'https://api.parse.bot/scraper/2689dd27-5474-443e-b836-9b9cfa5a391b/search_coupons' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"query": "Tide",
"category": "food_and_drink"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace lozo-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Lozo grocery coupons SDK — bounded, re-runnable; every call capped."""
from parse_apis.lozo_com_api import Lozo, Category, InvalidCategory
client = Lozo()
# Search coupons by brand name
for coupon in client.coupons.search(query="Tide", limit=3):
print(coupon.label, coupon.discount_amount, coupon.brands)
# Filter by category
item = client.coupons.search(category=Category.FOOD_AND_DRINK, limit=1).first()
if item:
print(item.description, item.source_url)
# Typed error handling
try:
for c in client.coupons.search(category=Category.HOUSEHOLD, query="Crest", limit=2):
print(c.label, c.root_category, c.stores)
except InvalidCategory as e:
print("bad category:", e.category)
print("exercised: coupons.search")
Search grocery coupons by brand/keyword and/or category. Returns paginated coupon results with discount details, brand associations, categories, and source links. Results are auto-iterated across pages; each page contains up to ~22 coupons.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search term to filter coupons by brand or product name (e.g. 'Tide', 'Crest', 'cereal'). |
| category | string | Filter by top-level coupon category. Omitting returns coupons from all categories. |
{
"type": "object",
"fields": {
"page": "integer — current page number",
"coupons": "array of coupon objects with id, label, description, discount_amount, discount_symbol, brands, categories, root_category, source_url, image_url, source_name, access_type, stores",
"results_count": "integer — number of coupons returned on this page",
"total_site_coupons": "integer — total coupons available on the site"
},
"sample": {
"data": {
"page": 1,
"coupons": [
{
"id": 715087,
"label": "$3.00 off",
"brands": [
"Tide®"
],
"stores": [],
"image_url": "https://new-lozo-prod.s3.amazonaws.com/offers/images/offer_712024.jpeg",
"categories": [
"Pod Laundry Detergent"
],
"source_url": "https://lozo.com/print-coupon/get-now/715087",
"access_type": "cashback_rebates",
"description": "Save $3.00 OFF ONE Tide PODS Laundry Detergent 102 ct TO 112 ct",
"source_name": "P&G Good Everyday",
"root_category": "Laundry Detergent",
"discount_amount": "3.00",
"discount_symbol": "$"
}
],
"results_count": 22,
"total_site_coupons": 2588
},
"status": "success"
}
}About the Lozo API
What the API Returns
The search_coupons endpoint returns paginated coupon records from Lozo's grocery coupon database. Each coupon object includes a unique id, a human-readable label, a description of the offer terms, a discount_amount paired with a discount_symbol (e.g. dollar or percent), one or more brands, a categories array, a root_category for top-level grouping, and a source_url pointing to the original offer. The response also surfaces results_count for the current page and total_site_coupons so you can gauge overall inventory size.
Filtering and Pagination
The query parameter accepts brand names like Tide or Crest, or product terms like cereal, and filters coupon records by matching text. The category parameter restricts results to a specific top-level coupon category; omitting it returns coupons across all categories. Pagination is controlled by the page integer — each page holds approximately 22 coupons. Iterating page sequentially lets you walk the full result set for any given query or category filter.
Data Shape and Coverage
The brands field is an array, reflecting that some coupons apply to product lines across multiple brand labels. The categories array can similarly contain multiple entries, while root_category gives a single canonical top-level bucket. The discount_amount is a numeric value and discount_symbol clarifies its unit, making it straightforward to compare and rank coupons by savings value without string parsing.
The Lozo API is a managed, monitored endpoint for lozo.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when lozo.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 lozo.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 coupon aggregator that filters results by
categoryto surface grocery deals by product type. - Compare
discount_amountvalues across brands returned by a keywordqueryto surface the highest-value offer. - Enrich a shopping list app by querying each product name and attaching matching coupons via
source_url. - Monitor
total_site_couponsover time to detect changes in coupon inventory volume. - Generate brand-specific deal digests by iterating pages with a
queryset to a specific brand name. - Classify coupons into internal taxonomies using the
root_categoryandcategoriesfields from each record.
| 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 Lozo offer an official developer API?+
What does the `search_coupons` endpoint return beyond the discount value?+
label, a description of offer terms, a discount_amount with a discount_symbol, an array of brands, categories, a root_category, and a source_url linking to the original offer — 9 fields per coupon object.Are there valid category values I should know about before filtering?+
category parameter maps to Lozo's top-level coupon categories. The API does not currently return an enumeration of valid category slugs. You can query without a category first and inspect the root_category and categories fields in results to discover category strings in use, then pass those as filters.Does the API expose coupon expiration dates or redemption instructions?+
How does pagination work when iterating through all coupons for a given query?+
page integer, results_count for the current page (up to ~22), and total_site_coupons. Increment the page parameter on successive calls and stop when results_count drops below the page size or returns zero — there is no explicit has_next_page flag in the response.