Customer Reviews

Discover customer review profiles across Google, Yelp, TripAdvisor, and more.

Reviews discovers customer review profiles associated with a business across Google, Yelp, TripAdvisor, Trustpilot, and other platforms. It returns aggregate ratings, review volume, operational status, identity data found on each platform, and - when requested - individual review text. Review data is particularly powerful for confirming a business is real and actively operating, and for cross-referencing identity details against the submitted application.


When to use it

  • You want to confirm a business has an established customer-facing presence with real review history
  • You need to check operational status: whether a business is currently open, temporarily closed, or permanently closed
  • You are cross-referencing contact details (address, phone, website) found on review platforms against the submitted application to detect impersonation
  • You are assessing a consumer-facing business (restaurant, retail, hospitality, healthcare) where review presence is expected
  • You want to supplement weak website or social signals with third-party platform corroboration

Review presence is sector-dependent. Consumer-facing businesses are expected to have reviews; B2B and professional services firms often do not. Absence of reviews is not a risk signal for sectors where reviews are uncommon. See Sector-specific guidance in the Online Presence: Best Practices guide.


How to request it

Reviews are available on both integration paths, with two request options that control how much data is returned.

Via POST /web_presence_requests

Use Order.ReviewSummary for profile-level data (rating, volume, metadata, identity fields). Use Order.ReviewFull when you also need the individual review entries with text and dates.

{
  "name": "Lucali",
  "address": "575 Henry St, Brooklyn, NY 11231",
  "options": ["Order.ReviewSummary"]
}

To include individual review text:

{
  "name": "Lucali",
  "address": "575 Henry St, Brooklyn, NY 11231",
  "options": ["Order.ReviewFull"]
}

Results are returned inline at found_reviews[].

Order.ReviewFull returns everything in Order.ReviewSummary plus the individual reviews[] array. You do not need to request both.

Via POST /searches with Order.Enhanced

Reviews are included automatically as part of Order.Enhanced at business.reviews[]. Individual review text is not available on this path — only profile-level data (rating, volume, metadata, identity fields) is returned.

Order.ReviewSummary and Order.ReviewFull as standalone options are not available on POST /searches. Use Order.Enhanced or switch to POST /web_presence_requests for review data.


Response fields

found_reviews[] fields

Each entry represents one review platform profile discovered for the business.

FieldTypeDescription
sourceenumReview platform: google, yelp, trustpilot, tripadvisor, other.
urlstringDirect URL to the review profile on that platform.
confidenceenumBaselayer's confidence the review profile belongs to this business: high, medium, low.
ratingfloatAverage numeric rating (e.g., 4.2).
volumeintegerTotal number of reviews on that platform.
summarystring | nullSentiment summary of reviews, when available.
addressstring | nullBusiness address found on the review profile.
phone_numberstring | nullBusiness phone number found on the review profile.
business_websitestring | nullBusiness website found on the review profile.
reviews[]arrayIndividual review entries - see below. Only returned when Order.ReviewFull is requested on POST /web_presence_requests.
metadataobject | nullPlatform-specific attributes — see below. Only populated for Google reviews; always null for Yelp, TripAdvisor, and Trustpilot.

On POST /searches with Order.Enhanced, reviews are returned at business.reviews[]. On POST /web_presence_requests, they are returned at found_reviews[]. The object structure is identical, except reviews[] (individual entries) is only available via POST /web_presence_requests.

reviews[] entry fields

Individual review entries, returned only when Order.ReviewFull is requested on POST /web_presence_requests.

FieldTypeDescription
datestringReview date (ISO 8601).
ratingintegerIndividual review rating.
textstringReview text content.
usernamestringReviewer's display name.

metadata fields

Platform-specific data, only populated for Google reviews — it is always null on Yelp, TripAdvisor, and Trustpilot entries. It is a best-effort enrichment, so it can also be null on a Google review. The object has exactly five keys, all of which are optional/nullable:

FieldTypeDescription
open_statestring | nullCurrent operating status, in Google's own phrasing (e.g., "Open", "Open ⋅ Closes 10 PM", "Temporarily closed", "Permanently closed"). The text is not normalized — match it case-insensitively, never on exact strings.
operating_hoursobject | nullOperating hours keyed by lowercase English day name ("monday", "tuesday", …); not all seven days are guaranteed to be present. Values are Google's free-form strings, e.g. "11 AM–10 PM" (en dash), "Closed", or "Open 24 hours".
descriptionstring | nullBusiness description from Google Maps.
typesarray | nullBusiness type tags from Google Maps (list of strings; can be empty).
service_optionsobject | nullSnake_case keys with boolean values, e.g. {"dine_in": true, "curbside_pickup": false}. The key set varies by business category — do not assume any particular key is present.

A populated metadata object looks like this:

{
  "open_state": "Open ⋅ Closes 10 PM",
  "operating_hours": {
    "monday": "11 AM–10 PM",
    "tuesday": "11 AM–10 PM",
    "wednesday": "Closed",
    "thursday": "11 AM–10 PM",
    "friday": "11 AM–11 PM",
    "saturday": "11 AM–11 PM",
    "sunday": "11 AM–9 PM"
  },
  "description": "Brick-oven pizza restaurant known for its thin-crust pies.",
  "types": ["Pizza restaurant", "Italian restaurant"],
  "service_options": {
    "dine_in": true,
    "takeout": true,
    "delivery": false,
    "curbside_pickup": false
  }
}

When consuming metadata, treat every key as optional, tolerate keys you don't recognize, and prefer showing nothing over guessing when a value is missing.


Interpreting results

Reviews produce three types of value: operational confirmation (is this business currently active?), reputation signals (do customers engage with it?), and identity corroboration (do the details on review platforms match the application?).

Always filter by confidence: high before using a profile in automated decisions. Medium and low confidence profiles may belong to an unrelated business. Only high confidence entries should influence decisioning.

open_state is the most direct operational signal available. Check it on every Google review entry. A permanently-closed status is a high-risk flag regardless of other signals. A temporarily-closed status warrants clarification. "Open ⋅ Closes [time]"-style values are normal outside business hours. Because the text is Google's own unnormalized phrasing, match it case-insensitively (e.g., look for "permanently closed" anywhere in the string) rather than comparing against exact strings. See Reviews section in the Online Presence: Best Practices guide.

Combine rating and volume, neither is meaningful alone. A high rating with fewer than 10 reviews is weak evidence. A rating below 3.0 with more than 20 reviews is a meaningful negative signal.

Cross-reference identity fields against the application. The address, phone_number, and business_website fields in each review entry are independently sourced from the review platform. In impersonation cases, these fields will consistently point to the real business. See Domain Impersonation Patterns in the Online Presence: Best Practices guide.


Related guides


Did this page help you?