Skip to content

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:

ProductTypeProduct codeWhat it does
Yelp Search APIScraper API (synchronous)yelp_searchSearch Yelp for what and where and get one results page.
Yelp Business APIScraper API (synchronous)yelp_businessGive one business alias or URL, get its details.
Yelp ScraperNo-code scraperyelpSweep 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
ParameterTypeExampleDescription
find_descstringpizzaWhat to search for, e.g. pizza or plumbers, up to 200 characters. Omit to list top businesses.
find_locstringSan Francisco, CARequired. Where: a city, neighborhood, address or ZIP code, e.g. San Francisco, CA.
pagenumber2Results page, 1–24 (ten businesses each). Defaults to 1.
sortstringhighest_ratedrecommended (default), highest_rated, most_reviewed.
include_htmlbooleantrueAlso 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"
    }
  }
}
FieldDescription
results[].position1-based position among the cards of this page, sponsored ones included.
results[].business_idYelp's business id.
results[].aliasThe /biz/ part of the business URL; pass it to the Business API.
results[].ratingAverage rating out of 5.
results[].pricePrice tier as Yelp shows it, $ to $$$$.
results[].addressStreet address as the card shows it.
results[].phonePhone number - Yelp prints it on sponsored cards only; the Business API has it for every one.
results[].snippetThe review excerpt (or the business's own blurb) the card quotes.
results[].hoursRegular weekly hours, as in the Business API; empty for a sponsored card.
results[].sponsoredtrue for a paid placement.
pagination.total_resultsResults 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
ParameterTypeExampleDescription
aliasstringtonys-pizza-napoletana-san-franciscoThe /biz/ part of a Yelp URL, e.g. tonys-pizza-napoletana-san-francisco. Send either alias or url.
urlstringhttps://www.yelp.com/biz/tonys-pizza-napoletana-san-franciscoA https://www.yelp.com/biz/<alias> URL (m.yelp.com works too). Send either alias or url.
include_htmlbooleantrueAlso 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"]
}
FieldDescription
summaryYelp's one-line description of the business.
is_claimedtrue when the owner has claimed the page on Yelp.
year_establishedThe year the owner gives; history is the owner's "History" text.
timezoneThe business's IANA time zone; hours are in it.
hoursRegular weekly hours in the business's local time, 24-hour HH:MM; a day with two intervals appears twice.
open_nowWhether the business was open when the page was scraped.
is_closedtrue when Yelp marks the business permanently closed.
amenitiesAmenities and services the business offers, as Yelp words them.
health_inspectionThe latest health inspection the page shows: score as the inspector reports it (Pass, A, 92), date and violations.
photosBusiness photo URLs.
popular_dishesThe "Popular Dishes" of the page, each with a photo.
review_highlightsDishes and phrases reviewers mention most, with one review sentence and how many reviews mention them.
reviewsThe 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_searchesThe "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}
ParameterTypeExampleDescription
find_locstringSan Francisco, CARequired. Where to search.
find_descstringpizzaWhat to search for.
sortstringhighest_ratedResult ordering, as in the Search API.
max_pagesnumber10Search pages to sweep, 1–20. Defaults to 5.
output_formatarray["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 ​

CodeHTTPMeaning
VALIDATION_ERROR400Missing find_loc; both or neither of alias/url; a URL that is not an https yelp.com /biz/ page.
NOT_FOUND404Yelp has no business page for this alias.
TARGET_BLOCKED502Every 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 page to walk further.
  • Reviews are the ones the page shows first, in Yelp's "Recommended" order; this API does not page through all reviews.

ScrapeIt Web Scraping API documentation. Managed web scraping services: www.scrapeit.io.