> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hasdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Yelp Reviews Scraper API

The Yelp Reviews Scraper API allows users to retrieve the review feed of a specific place on Yelp, with filtering by rating, language and keyword.

<Info>
  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.
</Info>

## Get Your API Key

Sign in at [hasdata.com](https://app.hasdata.com/sign-in), go to your account settings, and copy your API key.
All requests must include your key in the `x-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.

<Tip>You can use your credits across all HasData APIs. The same credit balance is shared platform-wide.</Tip>
<Warning>**Unused credits do not roll over.** Any remaining credits expire at the end of the current billing period.</Warning>

To monitor your credit usage and remaining balance, sign in to your account dashboard at [app.hasdata.com](https://app.hasdata.com/sign-in).

## Make Your First Request

<CodeGroup>
  ```bash cURL theme={null}
  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>'
  ```

  ```javascript Node.js theme={null}
  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);
  }
  ```

  ```python Python theme={null}
  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 PHP theme={null}
  <?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;
  ```

  ```java Java theme={null}
  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();
  ```

  ```csharp C# theme={null}
  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);
  ```

  ```ruby Ruby theme={null}
  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
  ```

  ```rust Rust theme={null}
  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(())
  }
  ```

  ```go Go theme={null}
  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))
  }
  ```
</CodeGroup>

## 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.<br />                                                                                                                                                                                              |
| `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.<br /> |
| `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.<br />                                                                                                             |
| `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).<br />                                                                                                                                                                                      |
| `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.<br />                                                                                                                                                                                                                                  |
