Yelp
Yelp Search API
Businesses in Yelp's own ranked order as JSON: rating, review count, price band, categories, address, contact rails, hours, photos and a review snippet. Every row carries both the opaque business_id and the human-readable alias, so a search result feeds the Business and Reviews endpoints directly. Yelp fixes the page size at 10. Costs 2 credits per page.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsontermstringWhat to look for, 1-200 characters: a category ("plumbers"), a dish, or a business name. Required together with location unless you send url instead.
Example: coffee
locationstringWhere to look, 1-200 characters — a city and region ("Austin, TX"), an address, or a postcode. EFFECTIVELY REQUIRED: Yelp geolocates a location-less search off the proxy exit, so the same request can answer about a different metro run to run. Send it explicitly or your results are not reproducible.
Example: Austin, TX
pageintegerResults page, 1-based. Yelp fixes the page size at 10 — results_per_page and total_results on the response tell you how far you can go. Each page is a separate billed request.
Example: 2
sortenum<string>default:recommendedResult ordering. CLOSED SET: Yelp IGNORES a sortby it does not recognise and quietly serves default ranking under a 200 — a billed premium scrape for a sort that never ran. Only these three values are accepted.
Example: rating
recommended— Yelp's own ranking (the default).rating— Highest rated first.review_count— Most reviewed first.
pricearray<integer>Price bands to include, 1 to 4 items drawn from 1, 2, 3, 4 ($ through $$$$). Send [1, 2] for cheap-and-mid only.
Example: [1, 2]
open_nowbooleanRestrict to businesses open at request time, in the business's own timezone.
Example: true
attributesarray<string>Raw Yelp filter aliases, up to 20, sent upstream as attrs — RestaurantsDelivery, GoodForKids, WheelchairAccessible. This is a deliberate PASSTHROUGH, not an enum: Yelp's vocabulary runs to roughly 117 values per vertical and it is not published, so an alias Yelp does not know is ignored upstream and the results come back unfiltered at full price.
Example: ["RestaurantsDelivery", "GoodForKids"]
urlstringA full yelp.com/search URL, 1-1000 characters, as an alternative to term + location. Either (term AND location) or url is required.
Example: https://www.yelp.com/search?find_desc=coffee&find_loc=Austin%2C+TX
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
results = client.yelp.search(
term="coffee",
location="Austin, TX", # always send this - see the note below
sort="rating",
price=[1, 2],
)
for biz in results["data"]["businesses"]:
print(biz["rank"], biz["name"], biz["rating"], biz["alias"])Response