Yelp APIm.yelp.com ↗
Search Yelp businesses, fetch ratings, hours, categories, and reviews by alias. 4 endpoints covering search, details, reviews, and autocomplete suggestions.
What is the Yelp API?
This API exposes 4 endpoints covering Yelp business search, detailed profiles, reviews, and autocomplete suggestions. Use search_businesses to find businesses by keyword and location, returning name, alias, and URL for each result. get_business_details returns structured data including star rating, review count, operating hours, address, and categories for any business identified by its alias slug.
curl -X GET 'https://api.parse.bot/scraper/e05ae8e2-83af-4fbd-acac-ab7d47268c2d/search_businesses?query=pizza&start=0&location=New+York%2C+NY' \ -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 m-yelp-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: Yelp API SDK — search businesses, get details, read reviews."""
from parse_apis.yelp_api import Yelp, BusinessNotFound
client = Yelp()
# Search for pizza places in New York
for biz in client.businesses.search(query="pizza", location="New York, NY", limit=3):
print(biz.name, biz.alias)
# Drill into the first result for full details
biz = client.businesses.search(query="pizza", location="New York, NY", limit=1).first()
if biz:
detail = client.businesses.get(alias=biz.alias)
print(detail.name, detail.rating, detail.review_count)
# Read recent reviews for the business via sub-resource
if biz:
for review in biz.reviews.list(limit=3):
print(review.author_name, review.rating, review.text[:80])
# Autocomplete suggestions for a search prefix
for group in client.suggestiongroups.search(text="thai", location="San Francisco, CA", limit=1):
for s in group.suggestions[:3]:
print(s.title, s.type)
# Typed error handling when a business doesn't exist
try:
client.businesses.get(alias="nonexistent-place-xyz-999")
except BusinessNotFound as exc:
print(f"Not found: {exc.alias}")
print("exercised: businesses.search / businesses.get / reviews.list / suggestiongroups.search")Search for businesses by keyword and location. Returns a paginated list of matching businesses with name, alias (slug), and URL. Results are offset-paginated via the start parameter (increments of ~10). The total field reflects the count of results returned in the current page, not a site-wide total.
| Param | Type | Description |
|---|---|---|
| query | string | Search keyword or category (e.g. 'pizza', 'cafes', 'italian restaurants'). |
| start | integer | Pagination offset for results. Increments in steps of 10. |
| location | string | Location to search in (e.g. 'New York, NY', 'San Francisco, CA'). |
{
"type": "object",
"fields": {
"total": "integer count of businesses returned on this page",
"businesses": "array of business objects each containing name, alias, and url"
},
"sample": {
"data": {
"total": 12,
"businesses": [
{
"url": "https://www.yelp.com/biz/l-industrie-pizzeria-new-york",
"name": "L'industrie Pizzeria",
"alias": "l-industrie-pizzeria-new-york"
},
{
"url": "https://www.yelp.com/biz/joes-pizza-new-york-148",
"name": "Joe's Pizza",
"alias": "joes-pizza-new-york-148"
}
]
},
"status": "success"
}
}About the Yelp API
Business Search and Details
The search_businesses endpoint accepts a query string (e.g. 'pizza', 'cafes'), a location string (e.g. 'San Francisco, CA'), and an optional start offset for pagination. It returns a businesses array of objects each containing name, alias, and url, plus a total count of matched results. The alias field is the slug you pass into the other endpoints.
get_business_details takes a required alias and returns a rich profile: name, rating, reviewCount, location (with address components), categories (each with title and alias), and operationHours broken down by day of the week. This is the right endpoint when you need structured hours or category data without parsing review text.
Reviews and Autocomplete
get_business_reviews accepts a required alias, an optional limit to control page size, and an optional after cursor for pagination. The response nests under a business object and exposes a reviews connection in edges/nodes format. Each node includes review text, star rating, author info, and photos. The pageInfo.endCursor value from one response feeds directly into the after parameter of the next call.
The autocomplete endpoint takes a required text prefix and an optional location context. It returns a response array of suggestion groups, each with a prefix and a suggestions array of matching terms and categories. A unique_request_id is also returned, useful for logging and deduplication. This endpoint is suited for building search-as-you-type interfaces backed by Yelp's suggestion data.
The Yelp API is a managed, monitored endpoint for m.yelp.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when m.yelp.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 m.yelp.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 restaurant discovery app that searches by cuisine keyword and city using
search_businesses - Aggregate business hours and category tags from
get_business_detailsfor a local directory - Pull paginated customer reviews with ratings and photos via
get_business_reviewsfor sentiment analysis - Implement a type-ahead search box using
autocompletewith location context - Track average star rating and review count changes over time for specific business aliases
- Compile category-tagged business lists across multiple cities for market research
- Cross-reference Yelp review counts and ratings against other data sources for competitive analysis
| 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 Yelp have an official developer API?+
What does `get_business_reviews` return beyond review text?+
reviewCount and rating. Pagination is cursor-based: use the pageInfo.endCursor value from one response as the after parameter in the next call. The limit parameter controls how many reviews are returned per page.Does `search_businesses` return full business details like hours or phone numbers?+
search_businesses returns only name, alias, and url per business, plus a total count. To get hours, categories, rating, and full address, pass the alias from the search result into get_business_details. You can fork this API on Parse and revise it to merge those two calls into a single enriched search response if your use case requires it.Is there a way to filter reviews by rating or date?+
get_business_reviews does not currently expose filtering by star rating or date; results are sorted by relevance by default. The endpoint supports cursor-based pagination via the after parameter and a limit per page. You can fork this API on Parse and revise it to add sorting or filtering parameters if that behavior is available from the underlying source.Does the API return menu data or photos beyond review photos?+
get_business_details includes business photos as part of the profile, and get_business_reviews returns photos attached to individual reviews. You can fork this API on Parse and revise it to add a dedicated photos or menu endpoint.