Yellow Pages API: Search businesses
Finds local US businesses on Yellow Pages by name or category and a city, state or ZIP. Returns listings with phone numbers in Yellow Pages order, excluding labeled ads; contact details, ratings and hours appear when listed.
Unofficial. Not affiliated with or endorsed by Yellow Pages.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Sort optional
sort Result order, for example distance.
name
One of
best_match,distance,average_rating,name. Defaultbest_match.- What, required
what Business type or name, for example electrician.
coffee
- Where, required
where US city and state or ZIP, for example Dallas, TX or 10001.
10001
- Max Results optional
max_results Maximum number of businesses, for example 30.
35
Whole number from 1 to 90. Default
30.
Input as JSON
{ "sort": "name", "what": "coffee", "where": "10001", "max_results": 35}Output
{ "businesses": [ { "zip": "10001", "city": "New York", "name": "{Petite} Maman", "state": "NY", "rating": null, "website": "https://mamannyc.com/locations/moynihan-station" , "categories": [ "Coffee Shops", "Beverages", "Coffee & Tea" ], "phone_number": "(786) 918-5933", "review_count": null, "street_address": "441 8th Ave Concourse Level - Food Hall", "years_in_business": null, "yellow_pages_link": "https://www.yellowpages.com/new-york-ny/mip/petite-maman-575765966" , "opening_hours_or_status": "closed now" }, { "zip": "10169", "city": "New York", "name": "{Petite} Maman", "state": "NY", "rating": null, "website": "https://mamannyc.com/locations/grand-central" , "categories": [ "Coffee Shops", "Beverages", "Coffee & Tea" ], "phone_number": "(646) 449-0299", "review_count": null, "street_address": "230 Park Ave", "years_in_business": null, "yellow_pages_link": "https://www.yellowpages.com/new-york-ny/mip/petite-maman-575110538" , "opening_hours_or_status": "closed now" }, { "zip": "10022", "city": "New York", "name": "{Petite} Maman", "state": "NY", "rating": null, "website": "https://mamannyc.com/locations/the-hugh" , "categories": [ "Coffee Shops", "Beverages", "Coffee & Tea" ], "phone_number": "(929) 686-3047", "review_count": null, "street_address": "601 Lexington Ave", "years_in_business": 12, "yellow_pages_link": "https://www.yellowpages.com/new-york-ny/mip/petite-maman-575089502" , "opening_hours_or_status": "closed now" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"yellowpages.com/search_businesses","input":{"sort":"name","what":"coffee","where":"10001","max_results":35}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "yellowpages.com/search_businesses" , "input": { "sort": "name", "what": "coffee", "where": "10001", "max_results": 35 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "yellowpages.com/search_businesses" , "input": { "sort": "name", "what": "coffee", "where": "10001", "max_results": 35 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run yellowpages.com/search_businesses# with {"sort":"name","what":"coffee","where":"10001","max_results":35}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "what", "where" ], "properties": { "sort": { "enum": [ "best_match", "distance", "average_rating", "name" ], "type": "string", "default": "best_match", "description": "Result order, for example distance." }, "what": { "type": "string", "description": "Business type or name, for example electrician." }, "where": { "type": "string", "description": "US city and state or ZIP, for example Dallas, TX or 10001." }, "max_results": { "type": "integer", "default": 30, "maximum": 90, "minimum": 1, "description": "Maximum number of businesses, for example 30." } }}Output schema
{ "type": "object", "required": [ "businesses" ], "properties": { "businesses": { "type": "array", "items": { "type": "object", "required": [ "name", "categories", "phone_number", "street_address", "city", "state", "zip", "website", "years_in_business", "rating", "review_count", "opening_hours_or_status", "yellow_pages_link" ], "properties": { "zip": { "type": [ "string", "null" ], "description": "ZIP code when listed." }, "city": { "type": [ "string", "null" ], "description": "City when listed." }, "name": { "type": "string", "description": "Business name." }, "state": { "type": [ "string", "null" ], "description": "State abbreviation when listed." }, "rating": { "type": [ "number", "null" ], "description": "Displayed rating out of 5, when shown." }, "website": { "type": [ "string", "null" ], "description": "Business website when shown." }, "categories": { "type": "array", "items": { "type": "string" }, "description": "Listed business categories." }, "phone_number": { "type": "string", "description": "Listed business phone number." }, "review_count": { "type": [ "integer", "null" ], "description": "Displayed number of reviews, when shown." }, "street_address": { "type": [ "string", "null" ], "description": "Street address when listed." }, "years_in_business": { "type": [ "integer", "null" ], "description": "Years in business when shown." }, "yellow_pages_link": { "type": "string", "description": "Yellow Pages listing link." }, "opening_hours_or_status": { "type": [ "string", "null" ], "description": "Opening hours or current open status when shown." } }, "additionalProperties": false }, "description": "Businesses in search result order without ads." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
yellowpages.com/search_businesses- Returns
- name, categories, phone, street address, city, state, ZIP, website, years in business, rating, review count, opening hours or status, Yellow Pages link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method yellowpages.com/search_businesses with the inputs above.
Ask your agent
- Find plumbers in Tucson, AZ with their phone numbers and addresses
- Look up 24-hour locksmiths near ZIP 60614 on Yellow Pages, sorted by distance
- I need a list of the top-rated Italian restaurants in Providence, RI — show ratings, review counts and hours
- Get me up to 50 roofing contractors around Charlotte, NC from yellowpages.com, including how many years each has been in business
- Is there a Joe's Auto Repair in 33101? Give me its phone number, website and whether it's open now
See more
Finds businesses and places near a location on Google Maps, in Google Maps order, with rating, hours, contact details and links when shown.
google.com/search_placesLooks up a public Google Maps place by name and location and returns its profile: address, rating, hours, phone, website and photos.
google.com/get_placeFinds named places or kinds of places in a city or area, in search order, using OpenStreetMap Nominatim. Results may be fewer than requested. Data © OpenStreetMap contributors (ODbL).
openstreetmap.org/search_placesFinds the best-matching Better Business Bureau profile for a business name and city/state or ZIP code, with its BBB rating, accreditation, customer reviews, complaint counts and alerts. BBB ratings are not customer review scores.
bbb.org/get_business_profileFinds the AutoZone stores nearest a US ZIP code, city or street address, with contact details, opening hours, whether each is open now, distance and store page links.
autozone.com/search_storesFinds a business near a city and state or ZIP code on the Better Business Bureau and reads its published complaints, newest first, with the three-year complaint total. The three-year total may exceed the publicly displayed complaint details.
bbb.org/get_business_complaintsFinds a place on Google Maps by name and location and returns its public reviews in the chosen order.
google.com/get_place_reviewsSearches Apartments.com rentals by city, neighborhood, or ZIP code, with optional rent, bedroom, pet, and page filters. Rent and availability wording is returned when displayed; missing details are null.
apartments.com/search_apartments