HasData is an independent service and is not affiliated with, endorsed by, or sponsored by Yelp. Yelp is a trademark of its respective owner. This API works with publicly available data only.
Get Your API Key
Sign in at hasdata.com, go to your account settings, and copy your API key. All requests must include your key in thex-api-key header.
Request Cost and API Credits
Each request to the Yelp Reviews Scraper API consumes API Credits from your account balance.- Cost per request: 10 API Credits
- Credits are deducted only for successful requests.
- Your total available credits depend on your active plan.
You can use your credits across all HasData APIs. The same credit balance is shared platform-wide.
Unused credits do not roll over. Any remaining credits expire at the end of the current billing period.
Make Your First Request
curl --request GET -G \
--url 'https://api.hasdata.com/scrape/yelp/reviews' \
--data-urlencode 'placeId=-4ofMtrD7pSpZIX5pnDkig' \
--data-urlencode 'rating=5,4' \
--data-urlencode 'languageCode=en' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your-api-key>'
const axios = require('axios').default;
const options = {
method: 'GET',
url: 'https://api.hasdata.com/scrape/yelp/reviews',
params: {placeId: '-4ofMtrD7pSpZIX5pnDkig', rating: '5,4', languageCode: 'en'},
headers: {'Content-Type': 'application/json', 'x-api-key': '<your-api-key>'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import requests
url = "https://api.hasdata.com/scrape/yelp/reviews"
querystring = {"placeId":"-4ofMtrD7pSpZIX5pnDkig","rating":"5,4","languageCode":"en"}
headers = {
"Content-Type": "application/json",
"x-api-key": "<your-api-key>"
}
response = requests.get(url, headers=headers, params=querystring)
print(response.json())
<?php
$params = [
"placeId" => "-4ofMtrD7pSpZIX5pnDkig",
"rating" => "5,4",
"languageCode" => "en",
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hasdata.com/scrape/yelp/reviews?" . http_build_query($params),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <your-api-key>",
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient();
HttpUrl url = HttpUrl.parse("https://api.hasdata.com/scrape/yelp/reviews")
.newBuilder()
.addQueryParameter("placeId", "-4ofMtrD7pSpZIX5pnDkig")
.addQueryParameter("rating", "5,4")
.addQueryParameter("languageCode", "en")
.build();
Request request = new Request.Builder()
.url(url)
.get()
.addHeader("Content-Type", "application/json")
.addHeader("x-api-key", "<your-api-key>")
.build();
Response response = client.newCall(request).execute();
using System.Net.Http;
using System.Web;
var client = new HttpClient();
var query = HttpUtility.ParseQueryString(string.Empty);
query["placeId"] = "-4ofMtrD7pSpZIX5pnDkig";
query["rating"] = "5,4";
query["languageCode"] = "en";
var url = $"https://api.hasdata.com/scrape/yelp/reviews?{query}";
var request = new HttpRequestMessage(new HttpMethod("GET"), url);
request.Headers.Add("x-api-key", "<your-api-key>");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
require 'net/http'
require 'uri'
uri = URI("https://api.hasdata.com/scrape/yelp/reviews")
params = {
"placeId" => "-4ofMtrD7pSpZIX5pnDkig",
"rating" => "5,4",
"languageCode" => "en",
}
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request["Content-Type"] = 'application/json'
request["x-api-key"] = '<your-api-key>'
response = http.request(request)
puts response.read_body
use reqwest::blocking::Client;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let res = client
.get("https://api.hasdata.com/scrape/yelp/reviews")
.query(&[("placeId", "-4ofMtrD7pSpZIX5pnDkig")])
.query(&[("rating", "5,4")])
.query(&[("languageCode", "en")])
.header("Content-Type", "application/json")
.header("x-api-key", "<your-api-key>")
.send()?
.text()?;
println!("{}", res);
Ok(())
}
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
params := url.Values{}
params.Set("placeId", "-4ofMtrD7pSpZIX5pnDkig")
params.Set("rating", "5,4")
params.Set("languageCode", "en")
u := "https://api.hasdata.com/scrape/yelp/reviews?" + params.Encode()
req, _ := http.NewRequest("GET", u, nil)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("x-api-key", "<your-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
API Parameters
| Parameter | Default Value | Required | Description |
|---|---|---|---|
placeId | -4ofMtrD7pSpZIX5pnDkig | Yes | The Yelp ID of the place. For example, ‘-4ofMtrD7pSpZIX5pnDkig’. Yelp IDs can be obtained from the Yelp Search Scraper API. |
domain | - | No | Yelp domain to use. Default is www.yelp.com. |
query | - | No | 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 | - | No | The order in which the reviews are returned. Defaults to relevanceDesc. |
rating | 5,4 | No | 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 | en | No | Language of the reviews to return, as a two-letter code (e.g., ‘en’, ‘es’, ‘fr’). Defaults to en. |
notRecommended | - | No | 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. |
start | - | No | 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 | - | No | 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. |