String API
Site integrations

Yelp

Yelp business records, search by term and location, and business reviews, read from Yelp's GraphQL API.

Call these actions with your String API key; see Authentication. Every call answers with the envelope described in Responses & errors, whose data holds the rows below.

  • Site: yelp
  • Version: 1.0.0
  • Reads from: yelp.com
ActionDescriptionListed price
businessRead Yelp business records by id, alias or URL: address, coordinates, phone, categories, rating, review counts, price range, opening hours, ordering partners and the newest review.1.05× its requests
searchSearch Yelp by term and location, 10 organic results a page, each with its rating, review count, price range, categories and coordinates.1.05× its requests
reviewsRead a Yelp business's reviews, 49 a page, newest or oldest first: text, rating, date, the author's standing, and check-in and payment tags.1.05× its requests

business

Read Yelp business records by id, alias or URL: address, coordinates, phone, categories, rating, review counts, price range, opening hours, ordering partners and the newest review.

POST https://request.usestring.ai/v1/integrations/yelp/business

Input

Unknown fields are rejected.

FieldTypeDescription
itemsstring[]Required. Yelp business ids (encid), aliases, or yelp.com/biz/ URLs. 1 to 300 entries.

Output

data is an array of rows, one per result. Each row has:

FieldTypeDescription
encidstring—
aliasstring | null—
namestring | null—
urlstring | null—
addressLine1string | null—
addressLine2string | null—
addressLine3string | null—
citystring | null—
postalCodestring | null—
regionCodestring | null—
countryCodestring | null—
latitudenumber | null—
longitudenumber | null—
locationEncidstring | null—
neighborhoodsstring[]—
phonestring | null—
categoriesobject[]—
categories[].aliasstring | null—
categories[].encidstring | null—
categories[].titlestring | null—
categories[].rootAliasstring | null—
categories[].rootEncidstring | null—
ratingnumber | null—
reviewCountinteger | null—
reviewCountsByRatinginteger[]Review counts for 1 to 5 stars, in that order.
reviewCountsByLanguageobject[]—
reviewCountsByLanguage[].languagestring—
reviewCountsByLanguage[].countinteger—
priceRangestring | null$ to $$$$.
isClosedboolean | null—
isClosedTodayboolean | null—
isCurrentlyOpenboolean | nullOpen when the call ran.
hasSpecialHoursTodayboolean | null—
todayDayIndexinteger | null—
hoursobject[]—
hours[].dayShortstring | null—
hours[].hoursstring[] | nullIntervals such as 12:00 PM - 10:00 PM.
hoursRawobject[]—
hoursRaw[].dayShortstring | null—
hoursRaw[].intervalsMinutesOfWeekinteger[][] | null—
primaryPhotoEncidstring | null—
primaryPhotoUrlstring | null—
partnerCtaTypestring | nullThe ordering partner call to action, such as food_ordering.
partnerNamestring | null—
partnerDeliveryUrlstring | null—
partnerPickupUrlstring | null—
newestReviewobject | null—
newestReview.encidstring | null—
newestReview.ratinginteger | null—
newestReview.textstring | null—
newestReview.languagestring | null—
newestReview.dateLocalstring | nullISO 8601, in the business's time zone.
newestReview.authorEncidstring | null—
newestReview.authorDisplayNamestring | null—
newestReview.authorEliteYearstring | null—
newestReview.authorReviewCountinteger | null—
newestReview.authorFriendCountinteger | null—
newestReview.checkInCountinteger | null—
newestReview.isFirstReviewerboolean | null—
newestReview.hasPaidThroughYelpboolean | null—

Example

curl https://request.usestring.ai/v1/integrations/yelp/business \
  -H "Authorization: Bearer $STRING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": ["mSMZJj2pFvttWLpcDmgrEA", "https://www.yelp.com/biz/pink-onion-san-francisco"]
  }'

data starts with these rows:

[
  {
    "encid": "mSMZJj2pFvttWLpcDmgrEA",
    "alias": "tonys-pizza-napoletana-san-francisco",
    "name": "Tony's Pizza Napoletana",
    "url": "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco",
    "addressLine1": "1570 Stockton St",
    "addressLine2": null,
    "addressLine3": null,
    "city": "San Francisco",
    "postalCode": "94133",
    "regionCode": "CA",
    "countryCode": "US",
    "latitude": 37.80038939,
    "longitude": -122.40903343,
    "locationEncid": "mSMZJj2pFvttWLpcDmgrEA",
    "neighborhoods": ["North Beach/Telegraph Hill"],
    "phone": "(415) 835-9888",
    "categories": [
      {
        "alias": "pizza",
        "encid": "DfJmebdT8pOtdHPRcg00eQ",
        "title": "Pizza",
        "rootAlias": "restaurants",
        "rootEncid": "787jnoKe7bybdgxyBxiCfA"
      },
      {
        "alias": "italian",
        "encid": "0cY_o1NfhMim_RKHMM9fww",
        "title": "Italian",
        "rootAlias": "restaurants",
        "rootEncid": "787jnoKe7bybdgxyBxiCfA"
      },
      {
        "alias": "cocktailbars",
        "encid": "FIW3O50FJ6hyqdvrHxTa0g",
        "title": "Cocktail Bars",
        "rootAlias": "nightlife",
        "rootEncid": "-Wdg7PAPC7AO84BVq3d6zA"
      }
    ],
    "rating": 4.2,
    "reviewCount": 9011,
    "reviewCountsByRating": [637, 402, 708, 1782, 5485],
    "reviewCountsByLanguage": [
      {
        "language": "en",
        "count": 8949
      },
      {
        "language": "it",
        "count": 12
      },
      {
        "language": "fr",
        "count": 13
      },
      {
        "language": "tr",
        "count": 2
      },
      {
        "language": "es",
        "count": 20
      },
      {
        "language": "de",
        "count": 7
      },
      {
        "language": "nl",
        "count": 2
      },
      {
        "language": "zh",
        "count": 2
      },
      {
        "language": "pt",
        "count": 4
      },
      {
        "language": "pl",
        "count": 1
      },
      {
        "language": "ja",
        "count": 1
      },
      {
        "language": "sv",
        "count": 1
      }
    ],
    "priceRange": "$$",
    "isClosed": null,
    "isClosedToday": false,
    "isCurrentlyOpen": true,
    "hasSpecialHoursToday": false,
    "todayDayIndex": 0,
    "hours": [
      {
        "dayShort": "Mon",
        "hours": ["12:00 PM - 10:00 PM"]
      },
      {
        "dayShort": "Tue",
        "hours": ["12:00 PM - 10:00 PM"]
      },
      {
        "dayShort": "Wed",
        "hours": ["12:00 PM - 10:00 PM"]
      },
      {
        "dayShort": "Thu",
        "hours": ["12:00 PM - 10:00 PM"]
      },
      {
        "dayShort": "Fri",
        "hours": ["12:00 PM - 11:00 PM"]
      },
      {
        "dayShort": "Sat",
        "hours": ["12:00 PM - 11:00 PM"]
      },
      {
        "dayShort": "Sun",
        "hours": ["12:00 PM - 11:00 PM"]
      }
    ],
    "hoursRaw": [
      {
        "dayShort": "Mon",
        "intervalsMinutesOfWeek": [
          [720, 1320]
        ]
      },
      {
        "dayShort": "Tue",
        "intervalsMinutesOfWeek": [
          [2160, 2760]
        ]
      },
      {
        "dayShort": "Wed",
        "intervalsMinutesOfWeek": [
          [3600, 4200]
        ]
      },
      {
        "dayShort": "Thu",
        "intervalsMinutesOfWeek": [
          [5040, 5640]
        ]
      },
      {
        "dayShort": "Fri",
        "intervalsMinutesOfWeek": [
          [6480, 7140]
        ]
      },
      {
        "dayShort": "Sat",
        "intervalsMinutesOfWeek": [
          [7920, 8580]
        ]
      },
      {
        "dayShort": "Sun",
        "intervalsMinutesOfWeek": [
          [9360, 10020]
        ]
      }
    ],
    "primaryPhotoEncid": "ptCPOJoqVokZW7GmQ5F4NQ",
    "primaryPhotoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/ptCPOJoqVokZW7GmQ5F4NQ/l.jpg",
    "partnerCtaType": "food_ordering",
    "partnerName": "DOORDASH",
    "partnerDeliveryUrl": "https://doordash.com/store/401987?src=yp&delivery=true&utm_source_id=dcc0e339-cfb0-431f-9942-297d274307f5",
    "partnerPickupUrl": "https://doordash.com/store/401987?src=yp&pickup=true&utm_source_id=dcc0e339-cfb0-431f-9942-297d274307f5",
    "newestReview": {
      "encid": "9a2b6eWMnrFQfKXljSEAhA",
      "rating": 5,
      "text": "Stopped by this little pizza shop with my friend Kevin for a casual dinner. The crust had a fantastic bake to it, and the cheese was hot and stretchy. We had a great time talking over a warm meal.",
      "language": "en",
      "dateLocal": "2026-09-28T09:34:23-07:00",
      "authorEncid": "n8KOutpRR8ydAZVsnoglyA",
      "authorDisplayName": "Kinley W.",
      "authorEliteYear": null,
      "authorReviewCount": 3,
      "authorFriendCount": 0,
      "checkInCount": 0,
      "isFirstReviewer": false,
      "hasPaidThroughYelp": false
    }
  }
]

Requests and billing

  • Requests: 1–2 Web Access requests per entry in items.
  • Billing: Listed as multiplier, 1.05× the cost of the requests it makes, billed as one charge. This is the listed default; your plan can set its own price. Per-action pricing isn't live yet: until it is, a call bills as its requests. See Billing.

Search Yelp by term and location, 10 organic results a page, each with its rating, review count, price range, categories and coordinates.

POST https://request.usestring.ai/v1/integrations/yelp/search

Input

Unknown fields are rejected.

FieldTypeDescription
querystringWhat to search for, such as pizza or plumbers; empty lists every business near location.
locationstringRequired. Where to search: a city, neighborhood, address or ZIP code, such as San Francisco, CA. At least 1 character.
pagesintegerHow many pages of 10 results to read, from 1. Yelp serves at most 24. From 1 to 24.

Output

data is an array of rows, one per result. Each row has:

FieldTypeDescription
encidstring—
aliasstring | null—
namestring | null—
urlstring | null—
rankinginteger | nullPosition among the query's organic results, from 1.
ratingnumber | null—
reviewCountinteger | null—
priceRangestring | null$ to $$$$.
categoriesobject[]—
categories[].aliasstring | null—
categories[].encidstring | null—
categories[].titlestring | null—
categories[].rootAliasstring | null—
categories[].rootEncidstring | null—
latitudenumber | null—
longitudenumber | null—
primaryPhotoUrlstring | null—
snippetTextstring | nullThe review excerpt on the result, with the query's matches between [[HIGHLIGHT]] and [[ENDHIGHLIGHT]].
snippetReadMoreUrlstring | null—

Example

curl https://request.usestring.ai/v1/integrations/yelp/search \
  -H "Authorization: Bearer $STRING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "pizza",
    "location": "San Francisco, CA",
    "pages": 2
  }'

data starts with these rows:

[
  {
    "encid": "mSMZJj2pFvttWLpcDmgrEA",
    "alias": "tonys-pizza-napoletana-san-francisco",
    "name": "Tony's Pizza Napoletana",
    "url": "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco",
    "ranking": 1,
    "rating": 4.2,
    "reviewCount": 9011,
    "priceRange": "$$",
    "categories": [
      {
        "alias": "pizza",
        "encid": "DfJmebdT8pOtdHPRcg00eQ",
        "title": "Pizza",
        "rootAlias": "restaurants",
        "rootEncid": "787jnoKe7bybdgxyBxiCfA"
      },
      {
        "alias": "italian",
        "encid": "0cY_o1NfhMim_RKHMM9fww",
        "title": "Italian",
        "rootAlias": "restaurants",
        "rootEncid": "787jnoKe7bybdgxyBxiCfA"
      },
      {
        "alias": "cocktailbars",
        "encid": "FIW3O50FJ6hyqdvrHxTa0g",
        "title": "Cocktail Bars",
        "rootAlias": "nightlife",
        "rootEncid": "-Wdg7PAPC7AO84BVq3d6zA"
      }
    ],
    "latitude": 37.80038939,
    "longitude": -122.40903343,
    "primaryPhotoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/ptCPOJoqVokZW7GmQ5F4NQ/ls.jpg",
    "snippetText": "Perfect for grabbing a slice to-go, finding a bench across the street, and enjoying [[HIGHLIGHT]]delicious pizza[[ENDHIGHLIGHT]]...",
    "snippetReadMoreUrl": "/biz/tonys-pizza-napoletana-san-francisco?hrid=6hPFVRqzTw-wfKYQ4q5cxw&osq=pizza"
  },
  {
    "encid": "IxDRIBkKtP-f24sr5zHAhQ",
    "alias": "pink-onion-san-francisco",
    "name": "Pink Onion",
    "url": "https://www.yelp.com/biz/pink-onion-san-francisco",
    "ranking": 2,
    "rating": 4.5,
    "reviewCount": 1439,
    "priceRange": "$$",
    "categories": [
      {
        "alias": "pizza",
        "encid": "DfJmebdT8pOtdHPRcg00eQ",
        "title": "Pizza",
        "rootAlias": "restaurants",
        "rootEncid": "787jnoKe7bybdgxyBxiCfA"
      },
      {
        "alias": "italian",
        "encid": "0cY_o1NfhMim_RKHMM9fww",
        "title": "Italian",
        "rootAlias": "restaurants",
        "rootEncid": "787jnoKe7bybdgxyBxiCfA"
      },
      {
        "alias": "gastropubs",
        "encid": "P3GSgNPUBIVmkGJTil5Wwg",
        "title": "Gastropubs",
        "rootAlias": "restaurants",
        "rootEncid": "787jnoKe7bybdgxyBxiCfA"
      }
    ],
    "latitude": 37.7687698,
    "longitude": -122.414829,
    "primaryPhotoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/8GtQUJi_GHlrng88Mv9TOQ/ls.jpg",
    "snippetText": "A little and cozy place, great team and [[HIGHLIGHT]]delicious pizzas[[ENDHIGHLIGHT]], pastas and salads.",
    "snippetReadMoreUrl": "/biz/pink-onion-san-francisco?hrid=0iccxcHnPg499CiUHTpK1Q&osq=pizza"
  }
]

Requests and billing

  • Requests: 1–2 Web Access requests per result page.
  • Billing: Listed as multiplier, 1.05× the cost of the requests it makes, billed as one charge. This is the listed default; your plan can set its own price. Per-action pricing isn't live yet: until it is, a call bills as its requests. See Billing.

reviews

Read a Yelp business's reviews, 49 a page, newest or oldest first: text, rating, date, the author's standing, and check-in and payment tags.

POST https://request.usestring.ai/v1/integrations/yelp/reviews

Input

Unknown fields are rejected.

FieldTypeDescription
businessstringRequired. A Yelp business id (encid), alias, or yelp.com/biz/ URL. At least 1 character.
pagesintegerHow many pages of up to 49 reviews to read, from 1. From 1 to 20.
sortnewest oldestnewest (the default) or oldest first. Oldest first keeps pages stable while reviews arrive, so an offset resumes a crawl exactly.
offsetintegerHow many reviews, in this sort order, to skip before the first page. At least 0.

Output

data is an array of rows, one per result. Each row has:

FieldTypeDescription
businessEncidstring—
businessAliasstring | null—
businessNamestring | null—
businessRatingnumber | null—
businessReviewCountinteger | null—
businessCitystring | null—
businessRegionCodestring | null—
reviewEncidstring—
offsetintegerThe review's position in this sort order, from 0.
reviewTextstring | null—
reviewLanguagestring | null—
ratinginteger | null—
reviewDateLocalstring | nullISO 8601, in the business's time zone.
authorEncidstring | null—
authorDisplayNamestring | null—
authorDisplayLocationstring | null—
authorEliteYearstring | nullThe last two digits of the author's latest Elite year.
authorIsEliteAllStarboolean | null—
authorReviewCountinteger | null—
authorFriendCountinteger | null—
authorBusinessPhotoCountinteger | null—
checkInCountinteger | null—
isFirstReviewerboolean | null—
hasPaidThroughYelpboolean | null—
hasPurchasedDealboolean | null—
hasPlacedReservationboolean | null—
reservationProviderstring | null—
reviewTotalCountinteger | nullThe business's review total on the page this review came from.

Example

curl https://request.usestring.ai/v1/integrations/yelp/reviews \
  -H "Authorization: Bearer $STRING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "business": "https://www.yelp.com/biz/pink-onion-san-francisco",
    "pages": 2,
    "sort": "oldest"
  }'

data starts with these rows:

[
  {
    "businessEncid": "IxDRIBkKtP-f24sr5zHAhQ",
    "businessAlias": "pink-onion-san-francisco",
    "businessName": "Pink Onion",
    "businessRating": 4.5,
    "businessReviewCount": 1439,
    "businessCity": "San Francisco",
    "businessRegionCode": "CA",
    "reviewEncid": "ngTU0uCy49AuBlrc-oSfdg",
    "offset": 0,
    "reviewText": "So excited for a reasonable Italian spot in my neighborhood. Bread is fresh baked, owners are amazing, and a solid beer and wine selection. Can't wait to come back!",
    "reviewLanguage": "en",
    "rating": 5,
    "reviewDateLocal": "2017-03-11T14:01:10-08:00",
    "authorEncid": "7iWaUgXFcGP3fTYtgHWD0A",
    "authorDisplayName": "Doug H.",
    "authorDisplayLocation": "San Francisco, CA",
    "authorEliteYear": null,
    "authorIsEliteAllStar": null,
    "authorReviewCount": 6,
    "authorFriendCount": 21,
    "authorBusinessPhotoCount": 0,
    "checkInCount": 0,
    "isFirstReviewer": false,
    "hasPaidThroughYelp": false,
    "hasPurchasedDeal": false,
    "hasPlacedReservation": false,
    "reservationProvider": null,
    "reviewTotalCount": 1435
  },
  {
    "businessEncid": "IxDRIBkKtP-f24sr5zHAhQ",
    "businessAlias": "pink-onion-san-francisco",
    "businessName": "Pink Onion",
    "businessRating": 4.5,
    "businessReviewCount": 1439,
    "businessCity": "San Francisco",
    "businessRegionCode": "CA",
    "reviewEncid": "nw0IaN8wLdYzON_qpQV7gw",
    "offset": 1,
    "reviewText": "Found this little gem on yelp and I'm so glad I did! Owner is super nice and offered us complimentary vermouth when we got there. To start we got their GS salad which was really refreshing and had a really nice citrus dressing. Next we had the bruschetta which was on point and the fire starter pizza which was served w a chili oil that had the perfect amount of spice. Every bite was amazing and you know what was the icing on the cake? Literally cake. Actually tiramisu. Melt in your mouth good, and again another sweet treat from the awesome owner! Can't wait to go back.",
    "reviewLanguage": "en",
    "rating": 5,
    "reviewDateLocal": "2017-03-12T23:10:18-07:00",
    "authorEncid": "xMxxfjgaAqY5wX0masiQJQ",
    "authorDisplayName": "Purvi D.",
    "authorDisplayLocation": "San Francisco, CA",
    "authorEliteYear": null,
    "authorIsEliteAllStar": null,
    "authorReviewCount": 22,
    "authorFriendCount": 14,
    "authorBusinessPhotoCount": 1,
    "checkInCount": 0,
    "isFirstReviewer": false,
    "hasPaidThroughYelp": false,
    "hasPurchasedDeal": false,
    "hasPlacedReservation": false,
    "reservationProvider": null,
    "reviewTotalCount": 1435
  }
]

Requests and billing

  • Requests: 1 Web Access request per result page, plus up to 1 setup request per call.
  • Billing: Listed as multiplier, 1.05× the cost of the requests it makes, billed as one charge. This is the listed default; your plan can set its own price. Per-action pricing isn't live yet: until it is, a call bills as its requests. See Billing.