The Infatuation APItheinfatuation.com ↗
Access The Infatuation's restaurant reviews, ratings, city guides, and neighborhood data via 5 structured endpoints covering search, browse, and detail retrieval.
What is the The Infatuation API?
The Infatuation API exposes restaurant review and guide data across 5 endpoints, covering city discovery, neighborhood listings, keyword search, and full review retrieval. The search_restaurants endpoint lets you query by keyword and city slug, returning rated review objects with cuisine, neighborhood, and contributor fields. The get_restaurant_review endpoint delivers structured review content including full review text, editorial rating, address, and cuisine classification for a specific restaurant.
curl -X GET 'https://api.parse.bot/scraper/c453b6b3-b2c3-4ad7-81ab-9ad465817930/search_restaurants?after=eyJjdXJzb3JUeXBlIjoiU0NPUkUiLCJ2YWx1ZXMiOlsiMTAyOC43NDIxIiwiMVBjMW5Db3F6WkNZazd3UGUyRFZSUyJdfQ%3D%3D&limit=5&query=pizza&location=new-york' \ -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 theinfatuation-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.
"""The Infatuation API - Restaurant Discovery Walkthrough
Discover restaurants, browse cities, and read detailed reviews.
"""
from parse_apis.the_infatuation_api import (
Infatuation, Location, PriceLevel, RestaurantNotFound, ReviewDetail
)
client = Infatuation()
# Search for pizza restaurants in New York — limit caps total items fetched.
for restaurant in client.restaurants.search(location=Location.NEW_YORK, query="pizza", limit=3):
print(restaurant.name, restaurant.rating, restaurant.price)
# Browse top restaurants in a city and drill into the first result's review.
top = client.restaurants.browse(city=Location.CHICAGO, limit=1).first()
if top:
print(top.name, top.address, top.preview_text)
for review in top.review(city=Location.CHICAGO, limit=1):
print(review.name, review.date_published, review.review_body[:100])
# List all covered cities and inspect their neighborhoods.
city = client.cities.list(limit=1).first()
if city:
for hood in city.neighborhoods.list(limit=3):
print(hood.name, hood.path)
# Typed error handling for a missing restaurant.
try:
client.restaurants.search(location=Location.LOS_ANGELES, query="nonexistent-xyz-99", limit=1).first()
except RestaurantNotFound as exc:
print(f"Not found: {exc.slug}")
print("exercised: restaurants.search / restaurants.browse / restaurant.review / cities.list / city.neighborhoods.list")Search for reviewed restaurants by keyword and location. Returns paginated results from The Infatuation's review database. Each result includes place details, rating, categories, cuisines, neighborhoods, and contributors. Pagination uses a cursor-based scheme.
| Param | Type | Description |
|---|---|---|
| after | string | Pagination cursor from pageInfo.endpageDirectionCode of a previous response. |
| limit | integer | Number of results to return per page. |
| query | string | Search keyword to filter restaurants (e.g. 'pizza', 'sushi', 'brunch'). |
| locationrequired | string | City slug identifying the market to search within (e.g. 'new-york', 'los-angeles', 'chicago'). |
{
"type": "object",
"fields": {
"nodes": "array of restaurant review objects with place details, rating, categories, cuisines, neighborhoods, and contributors",
"pageInfo": "object with endpageDirectionCode (pagination cursor), startpageDirectionCode, and moreDataIndicator",
"receivedRecordCount": "integer total matching results",
"endpageDirectionCode": "string pagination cursor for fetching the next page (promoted from pageInfo for SDK pagination)"
}
}About the The Infatuation API
What the API covers
The Infatuation API surfaces editorial restaurant content from theinfatuation.com across five endpoints. Coverage spans city-level discovery through get_cities_list, which returns city names, URL paths, and system identifiers. Once you have a city slug, get_city_neighborhoods returns the neighborhoods for that city — each with a name, path, and ID — useful for scoping subsequent queries. Both search_restaurants and browse_restaurants_by_city accept a city slug as a required input and return paginated nodes arrays containing place details, editorial rating, categories, cuisines, neighborhood assignments, and contributor attribution.
Search and browse endpoints
search_restaurants accepts an optional query string (e.g. 'sushi', 'brunch') alongside the required location slug. browse_restaurants_by_city returns the full mix of reviews and guides for a city without a keyword filter. Both endpoints return a pageInfo object containing endpageDirectionCode, startpageDirectionCode, and moreDataIndicator. Pass endpageDirectionCode as the after cursor on the next call to page through results. The receivedRecordCount field gives the total number of matching records.
Detailed review data
get_restaurant_review requires both a city slug and a slug field (the slugName available from search results). It returns an array of JSON-LD structured review objects typed as Review, containing author, reviewBody, reviewRating, and itemReviewed — the latter encapsulating the restaurant's name, address, and cuisine. This endpoint is the right choice when you need the full editorial text rather than the summary fields returned by search and browse.
The The Infatuation API is a managed, monitored endpoint for theinfatuation.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when theinfatuation.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 theinfatuation.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 city dining guide app that lists neighborhoods via
get_city_neighborhoodsand drills into reviews withget_restaurant_review. - Aggregate editorial ratings and cuisine tags from
search_restaurantsto compare coverage across multiple cities. - Populate a restaurant recommendation engine using reviewer ratings, neighborhood IDs, and category fields from
browse_restaurants_by_city. - Extract full review text and structured address data from
get_restaurant_reviewfor NLP-based sentiment or cuisine classification work. - Map restaurant density by neighborhood using neighborhood ID and name fields returned by
get_city_neighborhoods. - Sync a curated dining dataset across all covered cities using
get_cities_listto enumerate slugs and then paginate through each city's posts.
| 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 The Infatuation have an official public developer API?+
What does `search_restaurants` return beyond a restaurant's name?+
nodes array includes place details, an editorial rating, categories, cuisines, neighborhood assignments, and contributor attribution. The pageInfo object provides endpageDirectionCode for cursor-based pagination and a moreDataIndicator flag to detect whether additional pages exist.Does the API expose user-submitted reviews or only editorial content?+
Are menu data or reservation availability included?+
How does pagination work across search and browse endpoints?+
search_restaurants and browse_restaurants_by_city return a pageInfo object. Pass the endpageDirectionCode value from one response as the after parameter in the next request to retrieve the following page. The moreDataIndicator field tells you whether additional results remain.