Cigar Aficionado APIcigaraficionado.com ↗
Access cigar ratings, tasting notes, specs, Top 25 lists, and industry news from Cigar Aficionado via 4 structured JSON endpoints.
What is the Cigar Aficionado API?
The Cigar Aficionado API exposes 4 endpoints covering cigar ratings, detailed review data, annual Top 25 lists, and industry news from cigaraficionado.com. The search_cigars endpoint alone returns up to 9 filterable fields per result — including score, country of origin, size, and price — making it practical to build cigar discovery tools, rating databases, or collection-tracking applications without scraping the site yourself.
curl -X GET 'https://api.parse.bot/scraper/39fd1f83-7145-48eb-9a70-54c40ab854bc/search_cigars?page=1&price=5-10&query=Cohiba&sizes=Toro&brands=Cohiba&countries=Cuba&strengths=Medium' \ -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 cigaraficionado-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.cigar_aficionado_api import CigarAficionado, Cigar, CigarDetail, CigarSpecs, Top25Cigar, Article
client = CigarAficionado()
# Search for Cuban cigars and get details
for cigar in client.cigars.search(countries="Cuba", limit=5):
print(cigar.name, cigar.score, cigar.country, cigar.price)
detail = cigar.details()
print(detail.tasting_notes)
print(detail.specs.wrapper, detail.specs.filler, detail.specs.size)
# Browse Top 25 cigars for 2024
for top_cigar in client.top25cigars.list(year=2024, limit=10):
print(top_cigar.rank, top_cigar.name, top_cigar.url)
# Get latest news articles
for article in client.articles.list(limit=5):
print(article.title, article.url)
Search the cigar ratings database with optional filters for brand, country, size, strength, and price. Returns paginated results sorted by relevance. Each result includes basic cigar info (name, score, country, size, price) and a URL for fetching full details via get_cigar_detail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| price | string | Price range filter. |
| query | string | Search query string (e.g. 'Montecristo'). |
| sizes | string | Comma-separated list of sizes to filter by (e.g. 'Toro,Churchill'). |
| brands | string | Comma-separated list of brand names to filter by (e.g. 'Montecristo,Cohiba'). |
| countries | string | Comma-separated list of countries to filter by (e.g. 'Cuba,Nicaragua'). |
| strengths | string | Comma-separated list of strengths to filter by (e.g. 'Medium,Full'). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"results": "array of cigar result objects with id, name, url, score, image, issue_date, country, price, size",
"total_pages": "integer total number of pages available"
},
"sample": {
"data": {
"page": 1,
"results": [
{
"id": "26602",
"url": "https://www.cigaraficionado.com/ratings/26602/name/montecristo-no-4-petit-corona",
"name": "Montecristo No. 4",
"size": "Petit Corona",
"image": "https://mshanken.imgix.net/cao/ratings_extras/cigars/26602-H.jpg",
"price": "£26.40",
"score": "91",
"country": "Cuba",
"issue_date": "April 1, 2026"
}
],
"total_pages": 76
},
"status": "success"
}
}About the Cigar Aficionado API
Search and Filter the Ratings Database
The search_cigars endpoint accepts a freeform query string alongside structured filters: brands, countries, sizes, strengths, and price. Results are paginated via the page parameter, and each result object includes id, name, url, score, image, issue_date, country, price, and size. This makes it straightforward to build filtered catalog views or cross-reference cigars by origin and rating tier.
Full Review Details
get_cigar_detail takes a cigar review url (obtainable from search results) and returns the complete review record: a specs object with size, filler, binder, wrapper, country, price, box_date, and issue; a numeric score; and tasting_notes text when the review includes them. This is the endpoint to use when you need leaf construction details alongside the editorial rating.
Top 25 Lists and News
get_top25_cigars accepts an optional year parameter and returns the ranked list for that year, with each entry carrying rank, name, summary, and url. Coverage goes back through multiple years, making year-over-year comparisons straightforward. get_news_list returns paginated industry news articles with title, url, summary, and date fields, though summary and date are nullable depending on article format.
The Cigar Aficionado API is a managed, monitored endpoint for cigaraficionado.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cigaraficionado.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 cigaraficionado.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 search interface filtered by country, size, and strength using
search_cigarsparameters - Populate a personal cigar cellar tracker with ratings and specs pulled from
get_cigar_detail - Generate year-over-year Top 25 comparison tables using the
yearparameter onget_top25_cigars - Aggregate tasting notes and wrapper/binder/filler data across Nicaraguan or Cuban cigars for flavor profiling
- Monitor Cigar Aficionado news feed for industry announcements using paginated
get_news_listresults - Cross-reference cigar scores with retail pricing using the
scoreandpricefields from search results - Build a brand spotlight page by filtering
search_cigarsbybrandsand surfacing top-rated entries
| 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 Cigar Aficionado have an official public developer API?+
What does `get_cigar_detail` return beyond the rating score?+
specs object covering size, filler, binder, wrapper, country, price, box_date, and issue number, plus a tasting_notes string when the review includes one. The score field is a string and may be null if the review predates numerical ratings.How far back do the Top 25 lists go?+
get_top25_cigars endpoint accepts any year value. Coverage depends on what Cigar Aficionado has published and indexed on their site. Omitting the year parameter returns the most recent available list.Are individual reviewer profiles or user community ratings available?+
Can I filter cigars by rating score range in `search_cigars`?+
query, brands, countries, sizes, strengths, and price. You can retrieve paginated results and filter by the score field client-side, or fork the API on Parse and revise it to add a score-range parameter.