Cigars International APIcigarsinternational.com ↗
Access Cigars International product data, SKU details, customer reviews, daily deals, brand listings, store locations, and category browsing via a structured API.
What is the Cigars International API?
The Cigars International API provides 7 endpoints covering product search, full SKU-level details, customer reviews, brand listings, daily deals, category browsing, and physical store locations. The get_product_page endpoint returns cigar characteristics including Wrapper, Binder, Fillers, Origin, and Shape alongside individual SKU pricing and availability, making it practical for building cigar catalogs, price trackers, or comparison tools.
curl -X GET 'https://api.parse.bot/scraper/4d3b5f73-1f1d-47a2-83ec-16eecb0023b8/search_products?page=1&query=acid' \ -H 'X-API-Key: $PARSE_API_KEY'
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 cigarsinternational-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.
from parse_apis.cigars_international_api import CigarsInternational, ProductSummary, Product, Brand, Deal, Store, Review
ci = CigarsInternational()
# Search for cigars and browse results
for product in ci.productsummaries.search(query="macanudo", limit=5):
print(product.name, product.price, product.product_id)
# Get full product details from a search result
detail = product.details()
print(detail.product_name, detail.rating, detail.url)
for key, value in detail.characteristics.items():
print(key, value)
# Browse SKUs and read reviews
for sku in detail.skus:
print(sku.name, sku.pack, sku.price, sku.availability)
for review in sku.reviews.list(limit=3):
print(review.title, review.score, review.reviewer, review.verified_buyer)
# List brands filtered by letter
for brand in ci.brands.list(letter="A"):
print(brand.name, brand.url)
# Get today's daily deals
for deal in ci.deals.list():
print(deal.name, deal.size, deal.pack, deal.msrp_per_cigar, deal.availability)
# List store locations
for store in ci.stores.list():
print(store.name, store.address, store.phone, store.latitude)
Full-text search across all products. Returns paginated results (30 per page) with basic product info. Pagination via page number; total count reflects server-side matches.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. Each page returns up to 30 results. |
| queryrequired | string | Search keyword (e.g. 'acid', 'cohiba', 'macanudo'). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"query": "string the search query",
"total": "integer total number of results",
"products": "array of product objects with product_id, name, price, url, image_url"
},
"sample": {
"data": {
"page": 1,
"query": "acid",
"total": 30,
"products": [
{
"url": "https://www.cigarsinternational.com/product/AIA-PM.html",
"name": "ACID Cigars by Drew Estate",
"price": 8.49,
"image_url": "https://www.cigarsinternational.com/on/demandware.static/Sites-CI-Site/-/default/dw4b882d69/images/img-placeholder.png",
"product_id": "AIA-PM"
}
]
},
"status": "success"
}
}About the Cigars International API
Product Search and Category Browsing
The search_products endpoint accepts a query string and returns paginated results (up to 30 per page) with product_id, name, price, url, and image_url for each match. The browse_category endpoint works similarly but scopes results to a category_slug — either a top-level slug like cigars or a brand-specific path like big-list-of-brands/acid-cigars. Both endpoints share the same response shape and pagination model, and product_id values from either can be passed directly to get_product_page.
Product Details and SKU Variants
get_product_page accepts a product_id and returns the full product record: a characteristics object with keys like Profile, Shape, Wrapper, Origin, Brand, Binder, and Fillers; a description string; a rating out of 5; and a skus array. Each SKU carries its own sku_id, name, pack, price, msrp, and availability status, which is useful when a single product is sold in multiple pack sizes at different price points.
Reviews, Deals, Brands, and Stores
get_customer_reviews takes a SKU-level product_id (e.g. AIA-PM-1080 from skus[*].sku_id) and returns paginated reviews with score, title, content, reviewer, verified_buyer flag, votes_up, votes_down, and created_at. The get_daily_deal endpoint requires no inputs and returns current deals with price_tiers and a time_left countdown string. list_brands returns all brands alphabetically and accepts an optional letter filter. get_store_locations returns physical CI Superstore locations with address, phone, and latitude coordinates.
The Cigars International API is a managed, monitored endpoint for cigarsinternational.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cigarsinternational.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 cigarsinternational.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 cigar catalog filtered by Wrapper, Shape, or Origin using characteristics from
get_product_page. - Track price changes across SKU pack sizes by polling
get_product_pageforpriceandmsrpfields. - Aggregate verified customer review scores across brands using
get_customer_reviewsand itsaverage_scorefield. - Monitor the daily deal endpoint to alert users when specific brands appear in
get_daily_dealresults. - Compile a full brand directory by letter using the
letterfilter onlist_brands. - Map CI Superstore retail locations using
latitudeandaddressfields fromget_store_locations. - Power a cigar recommendation engine by combining search results with SKU-level rating and characteristic data.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Cigars International have an official developer API?+
What does `get_product_page` return beyond price — can I get cigar blend details?+
characteristics object with structured fields for Wrapper, Binder, Fillers, Origin, Shape, Profile, and Brand. It also returns a free-text description, an overall rating, and a skus array where each entry has its own pack, price, msrp, and availability.Can I retrieve wish lists or user account order history through this API?+
How does pagination work across the search and category endpoints?+
search_products and browse_category accept an integer page parameter and return up to 30 products per page. The response includes a total field indicating the full result count, which you can divide by 30 to determine the number of pages to iterate.