Appearance
Yelp Scraper API
Turn Yelp searches and business pages into structured data. Send what and where, get back one normalized results page - business id, alias, name, rating, review count, price tier, categories, address, neighborhoods, weekly hours, review snippet, thumbnail, sponsored flag - or send one business and get its details: summary, phone, website, claimed status, full address, coordinates, time zone, opening hours and whether it is open now, amenities, health inspection, photos, popular dishes, review highlights, related searches and the first reviews the page shows. No proxy pool, bot-check handling or parser maintenance on your side.
It ships as two synchronous Scraper APIs and a no-code scraper:
| Product | Type | Product code | What it does |
|---|---|---|---|
| Yelp Search API | Scraper API (synchronous) | yelp_search | Search Yelp for what and where and get one results page. |
| Yelp Business API | Scraper API (synchronous) | yelp_business | Give one business alias or URL, get its details. |
| Yelp Scraper | No-code scraper | yelp | Sweep up to 20 search pages and export JSON, CSV or XML. |
Every field is snake_case, the same convention as the Web Scraping API. Requests go to www.yelp.com from residential exits in several countries - Yelp serves the same English page there - and a page one country refuses is retried from another at no extra charge.
Yelp Search API
GET https://api.scrapeit.io/api/v1/scrape/yelp/search
x-api-key: YOUR_SCRAPEIT_API_KEY| Parameter | Type | Example | Description |
|---|---|---|---|
find_desc | string | pizza | What to search for, e.g. pizza or plumbers, up to 200 characters. Omit to list top businesses. |
find_loc | string | San Francisco, CA | Required. Where: a city, neighborhood, address or ZIP code, e.g. San Francisco, CA. |
page | number | 2 | Results page, 1–24 (ten businesses each). Defaults to 1. |
sort | string | highest_rated | recommended (default), highest_rated, most_reviewed. |
include_html | boolean | true | Also return the rendered page HTML in html. Paid add-on: +4 credits per request. |
Example request
bash
curl -G 'https://api.scrapeit.io/api/v1/scrape/yelp/search' \
-H 'x-api-key: YOUR_SCRAPEIT_API_KEY' \
--data-urlencode 'find_desc=pizza' \
--data-urlencode 'find_loc=San Francisco, CA'js
const response = await fetch(
'https://api.scrapeit.io/api/v1/scrape/yelp/search?' +
new URLSearchParams({ find_desc: 'pizza', find_loc: 'San Francisco, CA' }),
{ headers: { 'x-api-key': 'YOUR_SCRAPEIT_API_KEY' } },
);
const { data } = await response.json();
for (const business of data.results) console.log(business.position, business.name, business.rating);python
import requests
response = requests.get(
"https://api.scrapeit.io/api/v1/scrape/yelp/search",
headers={"x-api-key": "YOUR_SCRAPEIT_API_KEY"},
params={"find_desc": "pizza", "find_loc": "San Francisco, CA"},
timeout=180,
)
for business in response.json()["data"]["results"]:
print(business["position"], business["name"], business["rating"])Search response
json
{
"data": {
"find_desc": "pizza",
"find_loc": "San Francisco, CA",
"search_url": "https://www.yelp.com/search?find_desc=pizza&find_loc=San+Francisco%2C+CA",
"results": [
{
"position": 2,
"business_id": "mSMZJj2pFvttWLpcDmgrEA",
"alias": "tonys-pizza-napoletana-san-francisco",
"name": "Tony's Pizza Napoletana",
"url": "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco",
"rating": 4.2,
"review_count": 9049,
"price": "$$",
"categories": ["Pizza", "Italian", "Cocktail Bars"],
"address": "1570 Stockton St",
"city": "San Francisco",
"neighborhoods": ["North Beach/Telegraph Hill"],
"phone": null,
"snippet": "Perfect for grabbing a slice to-go and enjoying delicious pizza...",
"hours": [
{ "day": "Monday", "open": "12:00", "close": "22:00" },
{ "day": "Friday", "open": "12:00", "close": "23:00" }
],
"thumbnail": "https://s3-media0.fl.yelpcdn.com/bphoto/ptCPOJoqVokZW7GmQ5F4NQ/ls.jpg",
"sponsored": false
}
],
"pagination": {
"current_page": 1,
"total_results": 240,
"total_pages": 24,
"next_page_url": "https://www.yelp.com/search?find_desc=pizza&find_loc=San+Francisco%2C+CA&start=10"
}
}
}| Field | Description |
|---|---|
results[].position | 1-based position among the cards of this page, sponsored ones included. |
results[].business_id | Yelp's business id. |
results[].alias | The /biz/ part of the business URL; pass it to the Business API. |
results[].rating | Average rating out of 5. |
results[].price | Price tier as Yelp shows it, $ to $$$$. |
results[].address | Street address as the card shows it. |
results[].phone | Phone number - Yelp prints it on sponsored cards only; the Business API has it for every one. |
results[].snippet | The review excerpt (or the business's own blurb) the card quotes. |
results[].hours | Regular weekly hours, as in the Business API; empty for a sponsored card. |
results[].sponsored | true for a paid placement. |
pagination.total_results | Results Yelp reports; it lets you reach at most 240 of them. |
Coordinates are not part of the search page; the Business API returns them.
Yelp Business API
GET https://api.scrapeit.io/api/v1/scrape/yelp/business
x-api-key: YOUR_SCRAPEIT_API_KEY| Parameter | Type | Example | Description |
|---|---|---|---|
alias | string | tonys-pizza-napoletana-san-francisco | The /biz/ part of a Yelp URL, e.g. tonys-pizza-napoletana-san-francisco. Send either alias or url. |
url | string | https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco | A https://www.yelp.com/biz/<alias> URL (m.yelp.com works too). Send either alias or url. |
include_html | boolean | true | Also return the rendered page HTML in html. Paid add-on: +4 credits per request. |
A url is never fetched as given: ScrapeIt reads the alias out of it and loads the www.yelp.com business page.
Example request
bash
curl -G 'https://api.scrapeit.io/api/v1/scrape/yelp/business' \
-H 'x-api-key: YOUR_SCRAPEIT_API_KEY' \
--data-urlencode 'alias=tonys-pizza-napoletana-san-francisco'js
const response = await fetch(
'https://api.scrapeit.io/api/v1/scrape/yelp/business?' +
new URLSearchParams({ alias: 'tonys-pizza-napoletana-san-francisco' }),
{ headers: { 'x-api-key': 'YOUR_SCRAPEIT_API_KEY' } },
);
const { data } = await response.json();
console.log(data.name, data.phone, data.hours, data.reviews.length);python
import requests
response = requests.get(
"https://api.scrapeit.io/api/v1/scrape/yelp/business",
headers={"x-api-key": "YOUR_SCRAPEIT_API_KEY"},
params={"alias": "tonys-pizza-napoletana-san-francisco"},
timeout=180,
)
business = response.json()["data"]
print(business["name"], business["phone"], business["hours"], len(business["reviews"]))Business response
json
{
"data": {
"business_id": "mSMZJj2pFvttWLpcDmgrEA",
"alias": "tonys-pizza-napoletana-san-francisco",
"url": "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco",
"name": "Tony's Pizza Napoletana",
"summary": null,
"rating": 4.2,
"review_count": 9049,
"price": "$$",
"categories": ["Pizza", "Italian", "Cocktail Bars"],
"phone": "(415) 835-9888",
"website": "http://www.tonyspizzanapoletana.com",
"is_claimed": null,
"year_established": null,
"history": null,
"address": {
"street": "1570 Stockton St",
"city": "San Francisco",
"region": "CA",
"postal_code": "94133",
"country": "US"
},
"neighborhoods": ["North Beach/Telegraph Hill"],
"coordinates": { "latitude": 37.80038939, "longitude": -122.40903343 },
"timezone": "America/Los_Angeles",
"hours": [{ "day": "Monday", "open": "12:00", "close": "22:00" }],
"open_now": null,
"is_closed": false,
"amenities": ["Takes reservations", "Offers delivery", "Offers take-out", "Outdoor Seating"],
"health_inspection": null,
"photos": ["https://s3-media0.fl.yelpcdn.com/bphoto/ptCPOJoqVokZW7GmQ5F4NQ/l.jpg"],
"popular_dishes": [
{
"name": "Margherita Pizza",
"photo": "https://s3-media0.fl.yelpcdn.com/bphoto/gNW6CZw9FS15fVWjP1hjJQ/258s.jpg"
}
],
"review_highlights": [],
"reviews": [
{ "author_name": "Jane D.", "rating": 5, "date": "Oct 5, 2026", "text": "Worth the wait…" }
],
"related_searches": []
}
}The fields Yelp fills only for some businesses have this shape when present:
json
{
"summary": "A neighborhood pizzeria with creative pizzas and cozy indoor and outdoor seating.",
"is_claimed": false,
"open_now": false,
"health_inspection": {
"score": "Pass",
"date": "2026-09-28",
"violations": ["Standard not met: …"]
},
"review_highlights": [
{ "phrase": "Old Faithful", "text": "The Old Faithful was awesome …", "review_count": 15 }
],
"related_searches": ["Nice Lunch", "Cheap Pizza"]
}| Field | Description |
|---|---|
summary | Yelp's one-line description of the business. |
is_claimed | true when the owner has claimed the page on Yelp. |
year_established | The year the owner gives; history is the owner's "History" text. |
timezone | The business's IANA time zone; hours are in it. |
hours | Regular weekly hours in the business's local time, 24-hour HH:MM; a day with two intervals appears twice. |
open_now | Whether the business was open when the page was scraped. |
is_closed | true when Yelp marks the business permanently closed. |
amenities | Amenities and services the business offers, as Yelp words them. |
health_inspection | The latest health inspection the page shows: score as the inspector reports it (Pass, A, 92), date and violations. |
photos | Business photo URLs. |
popular_dishes | The "Popular Dishes" of the page, each with a photo. |
review_highlights | Dishes and phrases reviewers mention most, with one review sentence and how many reviews mention them. |
reviews | The reviews the page shows first (up to ten): the reviewer's public display name, rating, date and text. Nothing else about the reviewer is kept. |
related_searches | The "People also searched for" phrases. |
A missing field is null or an empty list, never an error. Yelp serves some business pages without its data cache; on such a page summary, coordinates, timezone and review_highlights are empty, the health inspection carries only its score, and the other fields are read from the page itself.
No-code Yelp Scraper
Prefer a dashboard run and a file? Scrapers without code → Yelp Scraper takes the same find_desc, find_loc and sort, sweeps up to 20 search pages and produces JSON, CSV and XML files with one record per business (the search result fields above). The same job is available over HTTP with an API key (x-api-key; scope scrapers:run to start, scrapers:read to poll):
POST https://api.scrapeit.io/api/v1/scrapers/yelp/jobs
GET https://api.scrapeit.io/api/v1/scrapers/yelp/jobs/{jobId}| Parameter | Type | Example | Description |
|---|---|---|---|
find_loc | string | San Francisco, CA | Required. Where to search. |
find_desc | string | pizza | What to search for. |
sort | string | highest_rated | Result ordering, as in the Search API. |
max_pages | number | 10 | Search pages to sweep, 1–20. Defaults to 5. |
output_format | array | ["json", "csv"] | One or more of json, csv, xml. Defaults to ["json"]; an empty list is rejected. |
A sweep of five pages or fewer finishes inline and the POST already answers with the result-file ids; a larger one answers queued, so poll the GET endpoint until status is finished (or failed). A business Yelp repeats on a later page is written once. Each swept page is billed like one Search API request; pages already swept are kept and billed even when a later page is blocked. A job started with an API key runs under that key, queued or not: its pages count in the key's usage.
Errors
| Code | HTTP | Meaning |
|---|---|---|
VALIDATION_ERROR | 400 | Missing find_loc; both or neither of alias/url; a URL that is not an https yelp.com /biz/ page. |
NOT_FOUND | 404 | Yelp has no business page for this alias. |
TARGET_BLOCKED | 502 | Every proxy attempt ended on Yelp's bot check. Retry later. |
See Error codes for the shared error format.
Credits and billing
Both APIs bill one flat price per request under their own product code - the residential proxy and the browser are part of it (billing & credits). Every request is scraped live - never served from the shared cache - so hours and reviews are current.
Price per request: 40 credits, flat; the dashboard Pricing page always shows the current price. A no-code job pays the Search API price per results page it fetched.
Limits and behavior
- Each page is loaded in a real browser; set your client timeout to at least 180 seconds.
- One search request returns one results page of ten businesses plus the sponsored ones Yelp mixes in. Use
pageto walk further. - Reviews are the ones the page shows first, in Yelp's "Recommended" order; this API does not page through all reviews.
Related pages
- Google Maps API - places, hours and reviews from Google Maps.
- Web Scraping API - the general single-URL scraper behind these APIs.
- Billing & credits - credit prices and plans.
- Files & artifacts - downloading the no-code result files.
- Managed Yelp scraping - ScrapeIt builds, runs and monitors the scraper for you and delivers ready-to-use data.