[Home](https://scrapfly.io/)/[Scrapers](https://scrapfly.io/scrapers)/Yelp

Businesses · ratings · reviews · search results

# // Yelp Scraper API

Get Yelp business details, star ratings, reviews and search results as clean JSON. Scrapfly handles the bot checks, so you send a URL and read the data.

- **Clone it and run it.** An open-source Yelp scraper for business pages, paginated reviews and search results, tested against live Yelp every night.
- **Rating, reviews and contact details in one request.** Read the business data Yelp publishes on each page: address, phone, price range, cuisine and opening hours.
 
 [Get free API key](https://scrapfly.io/register) [View GitHub scraper](https://github.com/scrapfly/scrapfly-scrapers/tree/main/yelp-scraper) [Read Unblocker docs](https://scrapfly.io/docs/scrape-api/unblocker) 

1,000 free credits. No credit card required.

 [  ](https://scrapeway.com/web-scraping-api/scrapfly) [  ](https://www.capterra.com/p/212653/Scrapfly/)  

 4.9/5 from 238 reviews 

 



 

 

 Yelp pages · illustration

 

 

 Business JSON**Output**

```
{
  <span class="c-str">"name"</span>: <span class="c-str">"Von's 1000Spirits"</span>,
  <span class="c-str">"rating"</span>: <span class="c-num">4.5</span>,
  <span class="c-str">"reviews"</span>: <span class="c-num">4241</span>,
  <span class="c-str">"price"</span>: <span class="c-str">"$$"</span>,
  <span class="c-str">"phone"</span>: <span class="c-str">"(206) 621-8667"</span>,
  <span class="c-str">"city"</span>: <span class="c-str">"Seattle"</span>,
  <span class="c-str">"zip"</span>: <span class="c-str">"98101"</span>,
  <span class="c-str">"cuisine"</span>: <span class="c-str">"New American"</span>
}
```

Printed by the Python request below[See the request ↓](#implementation)

  

What you can scrape from Yelp

Four kinds of Yelp data you can scrape with Scrapfly, no Yelp account required.

 ## // Scrape Yelp business pages

Name, street address, phone, website, price range, cuisine or categories and opening hours by day, with the star rating and review count. Key every record on the business URL or Yelp business ID to match the same place across repeat requests.

- name
- address
- telephone
- priceRange
- servesCuisine
- openingHours
- aggregateRating
- yelp-biz-id

  ## // Scrape Yelp reviews

Full review text, star rating and date for each review, with reaction counts and any photos attached to the review. The open-source scraper pages through a business's review feed, newest first, ten reviews per request.

- text
- rating
- createdAt
- feedback
- businessPhotos
- reviewCount

  ## // Scrape Yelp search results

Businesses for a keyword and location: name, Yelp URL, photo, review count, categories and star rating for each result, plus the total result count. Add `start=10` to the URL for the next page of ten.

- find\_desc
- find\_loc
- name
- url
- image
- totalResults
- start

  ## // Scrape Yelp photos

Photo URLs from the business page with their captions, upload dates and dish or scene keywords. Use them to see what customers photograph most, or to fill a listing gallery.

- contentUrl
- thumbnailUrl
- caption
- uploadDate
- keywords

  



Reliability

## // Get past Yelp's DataDome block

Yelp's DataDome check can answer with HTTP 403 and a "Please enable JS and disable any ad blocker" captcha page instead of the business. Use Unblocker (formerly ASP) with residential proxies to fetch business and search pages.

`unblocker=true`Enable Scrapfly's [Unblocker](https://scrapfly.io/products/unblocker) for Yelp's DataDome check, with `proxy_pool=residential` and `country=US`.



`render_js=true`Load the page in a browser, so the business and search data Yelp publishes as JSON-LD is in the HTML you get back.



`application/ld+json`Check for the business or search JSON-LD before parsing, so a block page never reaches your dataset.



 



Choose your tools

## // Scrapfly products for Yelp scraping

Start with the Web Scraping API, Unblocker and residential proxies. Add a review extraction model, screenshots, a browser session or a URL-list crawl as your workflow needs them. One API key covers all five products.

 ### Web Scraping API for Yelp

Fetch business and search URLs with Unblocker, browser rendering and residential proxies. The business data comes in the page HTML, ready to parse.

Read the JSON-LD: business pages carry the business record with its rating, and search pages carry the result list.

 

```
GET /scrape?url=https://www.yelp.com/biz/vons-1000-spirits-seattle-4&unblocker=true&render_js=true&proxy_pool=residential&country=US
```

 [Explore Web Scraping API →](https://scrapfly.io/products/web-scraping-api)  ### Data Extraction API for Yelp reviews

Add `extraction_model=review_list` for structured reviews, with no parser to write.

Get review text, star rating, date and sentiment for the reviews on the page, plus the business's average rating and review count.

 

```
GET /scrape?url=https://www.yelp.com/biz/vons-1000-spirits-seattle-4&unblocker=true&proxy_pool=residential&country=US&extraction_model=review_list
```

 [Explore Data Extraction API →](https://scrapfly.io/products/extraction-api)  ### Screenshot API for Yelp business pages

Capture the business page with its photos, star rating, opening hours and contact details.

Keep a dated visual record of each listing alongside your JSON.

 

```
GET /screenshot?url=https://www.yelp.com/biz/vons-1000-spirits-seattle-4&country=us&capture=fullpage&format=png
```

 [Explore Screenshot API →](https://scrapfly.io/products/screenshot-api)  ### Cloud Browser API for Yelp sessions

Call the Cloud Browser Unblock API with a Yelp URL to get a hosted Chromium session that is already past the DataDome check.

Connect Playwright or Puppeteer to the returned `ws_url` and navigate to the business page.

 

```
POST https://browser.scrapfly.io/unblock?key=KEY {"url": "https://www.yelp.com/biz/vons-1000-spirits-seattle-4", "country": "us"}
```

 [Explore Cloud Browser API →](https://scrapfly.io/products/cloud-browser-api)  ### Crawler API for lists of Yelp URLs

Submit business and search URLs as one bounded job, with Unblocker and residential proxies applied to the requests.

Ask for HTML output and parse the pages after the job finishes.

- url\_list
- unblocker
- proxy\_pool
- country
- content\_formats

 [Explore Crawler API →](https://scrapfly.io/products/crawler-api)  



One request

## // Fetch a Yelp business page and read its rating and reviews

The JSON at the top is what this code prints for a Seattle restaurant: one request, then selected fields from the business JSON-LD on the page.

Install `scrapfly-sdk` and replace the key below. The example uses only the SDK and Python's standard library.

**Prefer the full scraper?** The open-source [Yelp scraper on GitHub](https://github.com/scrapfly/scrapfly-scrapers/tree/main/yelp-scraper) covers business pages, paginated reviews and search results in Python 3.10. It runs against live Yelp every night. Clone it, set `SCRAPFLY_KEY`, and run `poetry run python run.py`.

 

 Python · scrapfly-sdkscrape + parse

```
<span class="c-key">import</span> html, json, re
<span class="c-key">from</span> scrapfly <span class="c-key">import</span> ScrapeConfig, ScrapflyClient

client = ScrapflyClient(key=<span class="c-str">"YOUR_SCRAPFLY_KEY"</span>)
result = client.scrape(ScrapeConfig(
    <span class="c-str">"https://www.yelp.com/biz/vons-1000-spirits-seattle-4"</span>,
    unblocker=<span class="c-key">True</span>, render_js=<span class="c-key">True</span>,
    proxy_pool=<span class="c-str">"residential"</span>, country=<span class="c-str">"US"</span>,
))
blocks = re.findall(
    <span class="c-str">r'<script type="application/ld\+json">(.*?)</script>'</span>,
    result.content, re.S,
)
biz = next((b <span class="c-key">for</span> b <span class="c-key">in</span> map(json.loads, blocks)
            <span class="c-key">if</span> <span class="c-str">"aggregateRating"</span> <span class="c-key">in</span> b), <span class="c-key">None</span>)
<span class="c-key">if</span> biz <span class="c-key">is</span> <span class="c-key">None</span>:
    <span class="c-key">raise</span> RuntimeError(<span class="c-str">"Yelp returned no business data"</span>)
business = {
    <span class="c-str">"name"</span>: html.unescape(biz[<span class="c-str">"name"</span>]),
    <span class="c-str">"rating"</span>: float(biz[<span class="c-str">"aggregateRating"</span>][<span class="c-str">"ratingValue"</span>]),
    <span class="c-str">"reviews"</span>: int(biz[<span class="c-str">"aggregateRating"</span>][<span class="c-str">"reviewCount"</span>]),
    <span class="c-str">"price"</span>: biz[<span class="c-str">"priceRange"</span>],
    <span class="c-str">"phone"</span>: biz[<span class="c-str">"telephone"</span>],
    <span class="c-str">"city"</span>: biz[<span class="c-str">"address"</span>][<span class="c-str">"addressLocality"</span>],
    <span class="c-str">"zip"</span>: biz[<span class="c-str">"address"</span>][<span class="c-str">"postalCode"</span>],
    <span class="c-str">"cuisine"</span>: biz.get(<span class="c-str">"servesCuisine"</span>),
}
print(json.dumps(business, indent=<span class="c-num">2</span>))
```

 

 



What the data is used for

## // Common Yelp scraping use cases

### Reputation monitoring

Track star rating and review count for each location over time, keyed on the business URL.



### Review analysis

Pull review text, ratings and dates to find what customers praise or complain about.



### Local lead lists

Build lists of businesses by category and city with name, phone, website and address.



### Competitor benchmarking

Compare ratings, price range and review volume across nearby businesses.



### Market mapping

Count businesses per category and city from the total result count.



### Listing data enrichment

Fill location records with opening hours, categories, photos and phone numbers.



 



Common questions

## // Yelp scraping FAQ

 Is scraping Yelp legal?There is no universal answer. Legality depends on your jurisdiction, the data, the access method and how you use the result. Keep the workflow to public business pages, avoid signed-in content, treat reviewer names and profiles as personal data, review Yelp's terms, and get legal advice for commercial use.

 Do I need a Yelp account or API key?No. These requests read public Yelp.com pages signed out. You only need a Scrapfly API key, not a Yelp account or a Yelp Fusion key.

 Why does Yelp return a 403 "Please enable JS" page?That is Yelp's DataDome bot check. It answers with HTTP 403 and a captcha page instead of the business. Set `unblocker=true`, `render_js=true`, `proxy_pool=residential` and `country=US`. Check that the response contains the business or search JSON-LD before parsing it.

 Can I scrape Yelp reviews?Yes. Add `extraction_model=review_list` to a business page request for the reviews on that page with text, rating and date. To collect more, the open-source scraper pages through the business's review feed ten reviews at a time, with full text, rating, date and reaction counts.

 Can I scrape Yelp search results?Yes. A search URL with `find_desc` and `find_loc` returns ten businesses per page with name, Yelp URL, photo, review count and categories, plus the total result count. Add `start=10`, `start=20` and so on for the next pages.

 Can I get opening hours and phone numbers?Yes. The business JSON-LD on each page carries the phone number, street address, price range and opening hours for every day of the week, next to the star rating and review count.

 How much does scraping Yelp cost?A business or search page with Unblocker, browser rendering and residential proxies costs 30 credits. The review extraction model adds credits based on the response size, 55 credits in total for a business page; a Screenshot API capture costs 60 credits. Every account starts with 1,000 free credits.

 What are the rate limits when scraping Yelp?Scrapfly sets no Yelp-specific limit. Your maximum parallelism is the concurrency quota on your plan, or a lower cap configured for the project. Each in-flight request uses one slot until it finishes.

 



Start with one request

## Fetch the URL. Read the JSON.

Web Scraping API with Unblocker and residential proxies, one call per Yelp URL.

Proxies across 190+ countries

 [Yelp scraper on GitHub](https://github.com/scrapfly/scrapfly-scrapers/tree/main/yelp-scraper) [How to scrape Yelp](https://scrapfly.io/blog/posts/how-to-scrape-yelpcom) [All scraper pages](https://scrapfly.io/scrapers) 

 

 [Get free API key](https://scrapfly.io/register) [Read the docs](https://scrapfly.io/docs/scrape-api/unblocker)