Scraper API

Yelp Reviews Scraper API

for the full text of every review, not an excerpt

Pull the whole review feed for any Yelp place as JSON. Text, rating, date, the reviewer behind it, photos and the owner's reply, plus the reviews Yelp keeps out of the main feed.

SUCCESS
99.5%

of requests succeed

P50
2.6s

median response

P95
4.1s

95% finish faster

PRICE
$0.75

per 1k scrapes at volume

Stop maintaining scrapers

Yelp reviews move with every release. Your parser shouldn't care.

  • A crawler to build and keep running
  • A feed Yelp's recommendation software thins out
  • Offsets that shift as new reviews land
  • Owner replies nested inside the review
  • Star and language counts only on the page
One integration commit replaces a backlog you’ll never finish.
scraper | git log
fix: review ids change after an edit
hotfix: offset drifts once new reviews land
fix: owner reply nested one level deeper
chore: rotate proxies for the .co.uk domain
fix: filtered feed needs its own page size
fix: star counts moved into a header script
hotfix: elite sort falls back to default order
fix: language filter ignored when a query is set
chore: refresh the place id map
fix: photos array missing on older reviews
fix: review ids change after an edit
hotfix: offset drifts once new reviews land
fix: owner reply nested one level deeper
chore: rotate proxies for the .co.uk domain
fix: filtered feed needs its own page size
fix: star counts moved into a header script
hotfix: elite sort falls back to default order
fix: language filter ignored when a query is set
chore: refresh the place id map
fix: photos array missing on older reviews
fix: review ids change after an edit
hotfix: offset drifts once new reviews land
fix: owner reply nested one level deeper
chore: rotate proxies for the .co.uk domain
fix: filtered feed needs its own page size
fix: star counts moved into a header script
hotfix: elite sort falls back to default order
fix: language filter ignored when a query is set
chore: refresh the place id map
fix: photos array missing on older reviews
fix: review ids change after an edit
hotfix: offset drifts once new reviews land
fix: owner reply nested one level deeper
chore: rotate proxies for the .co.uk domain
fix: filtered feed needs its own page size
fix: star counts moved into a header script
hotfix: elite sort falls back to default order
fix: language filter ignored when a query is set
chore: refresh the place id map
fix: photos array missing on older reviews
feat: integrate HasData API
Code Examples

One GET Request. That's the whole integration.

Start with just a query. Add more parameters when your use case needs them.

request example
curl -G 'https://api.hasdata.com/scrape/yelp/reviews' \
	--data-urlencode 'placeId=-4ofMtrD7pSpZIX5pnDkig' \
	--data-urlencode 'rating=5,4' \
	--data-urlencode 'languageCode=en' \
	--header 'x-api-key: <YOUR_API_KEY>' \
	--header 'Content-Type: application/json'
placeId * Place ID
The Yelp ID of the place. For example, '-4ofMtrD7pSpZIX5pnDkig'. Yelp IDs can be obtained from the Yelp Search Scraper API.
query Search Query
Note: Yelp ignores the `rating` filter while searching, so a query returns matching reviews of every star rating. Free-text query to search within the reviews of the place.
sortBy Sort By
The order in which the reviews are returned. Defaults to relevanceDesc.
rating Rating
Note: Yelp ignores this filter when `query` is set, so a search returns matching reviews of every star rating. Filters the reviews by star rating. Possible values are 5, 4, 3, 2 and 1. To return only five-star reviews, set it to `5`. To include several ratings, pass them comma-separated, for example `5,4,3`. When omitted, reviews with any rating are returned.
languageCode Language
Language of the reviews to return, as a two-letter code (e.g., 'en', 'es', 'fr'). Defaults to en.
notRecommended Not Recommended
Returns the reviews Yelp does not currently recommend (filtered out of the main feed by its recommendation software) instead of the recommended ones. These reviews carry no photos, videos or reactions, and are paginated ten at a time. Defaults to false.
domain Domain
Yelp domain to use. Default is `www.yelp.com`.
start Result Offset
Result offset for pagination. It skips the given number of reviews, so the step matches `num` (e.g., 0, 49, 98 for the recommended feed, or 0, 10, 20 when `notRecommended` is set).
num Number of Results
Number of reviews to return per page. The maximum is 49. Defaults to 49 for the recommended feed and to 10 when `notRecommended` is set.
TRY ALL 9 PARAMETERS FREE
Response

The feed, the totals, and the cursor

One call answers with the reviews themselves, the place they belong to with its star breakdown, and the offset to ask for the next page.

reviews.json
// Up to 49 per call, sorted by relevance unless you ask otherwise.

[
  {
    "position": 3,
    "id": "evLdvQSpWVen90DxUhwCmQ",
    "link": "https://www.yelp.com/biz/mozarts-coffee-roasters-austin?hr…",
    "rating": 5,
    "date": "2026-06-13T14:06:40-05:00",
    "user": {
      "name": "Daisy P.",
      "userId": "lEhBWqmr7aw2WGmSd0ye7Q",
      "link": "https://www.yelp.com/user_details?userid=lEhBWqmr7aw2WGmSd…",
      "thumbnail": "https://s3-media0.fl.yelpcdn.com/photo/QsVUw-jxzspimbJE6KA…",
      "address": "Houston, TX",
      "reviews": 323,
      "friends": 46,
      "photos": 1746,
      "eliteYear": "26",
      "isEliteAllStar": true
    },
    "comment": {
      "text": "Mozart's is a stole in Austin, it is a must to stop by whe…",
      "language": "en"
    },
    "reactions": [
      {
        "type": "HELPFUL",
        "label": "Helpful",
        "count": 0
      },
      {
        "type": "THANKS",
        "label": "Thanks",
        "count": 0
      },
      {
        "type": "LOVE_THIS",
        "label": "Love this",
        "count": 0
      },
      {
        "type": "OH_NO",
        "label": "Oh no",
        "count": 0
      }
    ],
    "photos": [
      {
        "link": "https://s3-media0.fl.yelpcdn.com/bphoto/jPTEvEGGSXCiuV6TF1…",
        "width": 1500,
        "height": 2000
      },
      {
        "link": "https://s3-media0.fl.yelpcdn.com/bphoto/6uNWxi-8lyLFsLX_lY…",
        "caption": "Menu",
        "width": 1709,
        "height": 2000
      },
      {
        "link": "https://s3-media0.fl.yelpcdn.com/bphoto/n2ROCPPnjmJFq7LiQo…",
        "width": 1500,
        "height": 2000
      }
    ],
    "ownerReply": {
      "owner": {
        "name": "Christine K.",
        "role": "MANAGER",
        "thumbnail": "https://s3-media0.fl.yelpcdn.com/buphoto/L0mg7YATAPxwFdyZL…"
      },
      "comment": "Thank you for visiting the cafe and taking time to share a…",
      "date": "2026-06-15T07:32:26-05:00"
    }
  }
]
Fields in reviews
rating number

Stars the reviewer gave, 1 to 5

comment.text string

Full review text, not an excerpt

comment.language string

Two-letter language of the text

date string

When it was posted, ISO 8601 with the place's offset

user object

name, userId, link, thumbnail, address, and the reviewer's own review, friend and photo counts. Elite reviewers also carry eliteYear as a two-digit string and isEliteAllStar

reactions object[]

Helpful, Thanks, Love this and Oh no, each with its count

ownerReply object

The business reply, when the owner left one

photos object[]

Photos attached to the review

videos / tags object[], string[]

Video clips attached to the review and Yelp's own labels on it, on the reviews that carry them

previousReviews object[]

Earlier versions, when the reviewer edited

isNotRecommended boolean

Set on reviews from the filtered feed

link string

Permalink to the review on Yelp

id / position string, number

Review id and its place in this page

What We Offer

The hard parts already happened

JS rendering, the filtered feed, and residential proxy rotation run on our side. Your code sends one GET and reads fields.

Loved by developers

Teams that deleted their scraper

Now it's the part of the pipeline they don't think about

4.8 ★★★★★
across 100+ reviews on 5 platforms
Trustpilot Trustpilot ★★★★★

HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.

Denver Sinclair
Denver Sinclair
Capterra Capterra ★★★★★

We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.

JN
Jacob N.
Trustpilot Trustpilot ★★★★★

Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.

Arnold Foster
Arnold Foster
Trustpilot Trustpilot ★★★★★

I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.

Hussein Ali
Hussein Ali
Clutch Clutch ★★★★★

We were particularly impressed with how easily we could integrate HasData into our existing workflow.

TB
Taras Bazyshyn
CEO at BAZTDL Sp. z o.o
Pricing

Plans that get cheaper at scale

Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.

Free
$0 /mo
One-time free trial
100 scrapes to start
1,000 credits, one time
1 concurrent request
Team seats
Community support
Start free
Startup
$49 /mo
$2.45 / 1k scrapes
20K scrapes / month
200K credits / month
15 concurrent requests
Team seats
Email support
Get started
Business
Recommended
$99 /mo
$0.99 / 1k scrapes
100K scrapes / month
1M credits / month
30 concurrent requests
Team seats
Priority email support
Get started
Growth
$249 /mo
$0.83 / 1k scrapes
3M credits / month
50 concurrent requests
Team seats
Dedicated account manager
Get started
Monthly scrape volume
Free 100K 500K 2M 6M 10M
Best fit
Business
scrapes / mo
100K
Concurrency
30
$ / 1k scrapes
$0.99
$99 /mo
Get Started
Enterprise
Custom price based on required volume

Past 100M credits a month, or terms the self-serve plans do not cover. We shape the contract around your workload.

Credits rollover
Unused credits carry into the next billing period.
Concurrency 2000+
Parallel request limits set to your peak load.
#1 request priority
Highest speed, always first in the queue.
Personal manager
A direct line to the founding team.
SSO
SAML single sign-on for the whole team.
SOC-2 compliance
Security review, DPA, and audit reports.
Talk to sales Quote within one business day
FAQ

Questions, answered

1 Grab your API key 2 Send a GET request 3 Get structured JSON

Your first Yelp review feed
is minutes away

100 scrapes free · no credit card