Yelp APIyelp.com ↗
Access Yelp business listings, details, hours, phone, website, photos, ratings, and reviews via a structured API. Search by keyword and location.
What is the Yelp API?
The Yelp API exposes 3 endpoints covering business search, full business profiles, and photo galleries. Use search_businesses to query businesses by keyword and location, retrieving up to 15 results per page with fields like rating, review_count, price_range, categories, and address. Switch to get_business_details for a single business's phone, website, hours, and summary, or get_business_photos to pull all user-contributed photos with captions and labels.
curl -X GET 'https://api.parse.bot/scraper/7e1332d8-dfa5-4fb0-9297-f9bf1c71543c/search_businesses?query=coffee&start=0&sort_by=best_match&location=San+Francisco%2C+CA' \ -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 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 SDK — search businesses, drill into details, browse photos."""
from parse_apis.yelp_api import Yelp, Sort, BusinessNotFound
client = Yelp()
# Search for businesses by keyword and location, sorted by rating.
for biz in client.businesssummaries.search(query="coffee", location="San Francisco, CA", sort_by=Sort.RATING, limit=5):
print(biz.name, biz.rating, biz.categories)
# Drill into the first result for full details.
summary = client.businesssummaries.search(query="pizza", location="New York, NY", limit=1).first()
if summary:
detail = summary.details()
print(detail.name, detail.phone, detail.website, detail.is_closed)
# Browse photos for that business via its sub-resource.
for photo in detail.photos.list(limit=3):
print(photo.caption, photo.url)
# Typed error handling: catch a not-found business.
try:
missing = client.business("nonexistent-biz-slug-12345").photos.list(limit=1).first()
except BusinessNotFound as exc:
print(f"Business not found: {exc.biz_id}")
print("exercised: businesssummaries.search / details / photos.list / BusinessNotFound")
Search for businesses by keyword and location. Returns up to ~15 businesses per page. Offset-based pagination via the start parameter; each page returns a businesses array. The total field reports the count of items in the current page, not total results available.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g. 'pizza', 'plumber', 'coffee') |
| start | integer | Result offset for pagination. Each page returns ~15 results; use start=0, 10, 20, etc. to paginate. |
| sort_by | string | Sort order for results |
| locationrequired | string | City, state, or ZIP code (e.g. 'New York, NY', 'San Francisco', '10001') |
{
"type": "object",
"fields": {
"query": "search keyword echoed back",
"total": "integer count of businesses returned in this page",
"location": "location echoed back",
"businesses": "array of business summary objects"
}
}About the Yelp API
Search and Browse Businesses
search_businesses accepts two required parameters — query (e.g. 'sushi', 'electrician') and location (city name, state, or ZIP code) — and returns an array of business summary objects. Each object includes id, alias, name, rating, review_count, price_range, categories, address, neighborhoods, and a direct url. Pagination is handled via the start offset parameter, and results can be sorted by best_match, rating, review_count, or distance.
Business Details
get_business_details takes a biz_id (the alias/URL slug, e.g. gary-danko-san-francisco) and returns a single business object. Fields include phone, website, price_range, categories, summary, address, city, state, rating, and review_count. Hours of operation are also included when available. The alias needed here can be obtained directly from the businesses array returned by search_businesses.
Photos
get_business_photos accepts the same biz_id slug and returns all available user-contributed photos for that business. Each photo object contains a url, caption, encid, and label (e.g. food, interior, exterior). This endpoint is useful for building visual directories or enriching business profiles without making multiple page-level requests.
Coverage Notes
Business coverage mirrors what Yelp indexes publicly, which is strongest for US businesses but includes many international listings. Data freshness reflects the current state of each business page. Review text is not returned by any endpoint — only aggregate rating and review_count are exposed in the current API.
The Yelp API is a managed, monitored endpoint for yelp.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when 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 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 local business directory filtered by category, price range, and neighborhood using
search_businessesfields. - Enrich a CRM or lead list with business phone numbers, websites, and hours via
get_business_details. - Populate a restaurant-finder app with ratings, review counts, and cuisine categories from search results.
- Aggregate user-contributed photos for a venue using
get_business_photoscaptions and labels. - Monitor rating and review count changes for competitor businesses over time.
- Generate structured business profiles for marketing or sales prospecting using address, category, and website fields.
- Power a map-based UI with address and neighborhood data from paginated
search_businessesresults.
| 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_details` return beyond what the search endpoint provides?+
search_businesses returns summary fields like name, rating, price_range, categories, and address. get_business_details adds phone, website, hours, and a text summary for a single business. Both share the alias identifier, so the typical workflow is to search first, then fetch details for selected results.Does the API return individual review text?+
rating and review_count but not individual review content, reviewer names, or review dates. You can fork this API on Parse and revise it to add a review-fetching endpoint.How does pagination work in `search_businesses`?+
start parameter controls the result offset. Each page returns up to 15 businesses, and total in the response tells you how many were returned in the current page. To retrieve the next page, increment start by 15.