BBB API: Get business complaints
Finds 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.
Unofficial. Not affiliated with or endorsed by BBB.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Business, required
business Business name, for example Comcast.
Comcast
- Location, required
location City and state or ZIP code, for example Philadelphia, PA or 19103.
Philadelphia, PA
- Max Results optional
max_results Maximum published complaints to return, for example 20.
20 (default)
Whole number from 1 to 100.
Input as JSON
{ "business": "Comcast", "location": "Philadelphia, PA"}Output
{ "complaints": [ { "status": "Resolved", "page_link": "https://www.bbb.org/us/pa/philadelphia/profile/internet-providers/comcast-corporation-0241-80003221/complaints" , "date_filed": "2026-09-02", "complaint_text": "My mother has xfinity TV service, and the TV box went out. After spending about an hour troubleshooting they determined the TV box was defective and sent out a technician to replace it, which he did. The TV works fine ******* there is a $100.00 service charge on the bill. It was a defective piece of…", "complaint_type": "Service or Repair Issues", "customer_final_reply": "[A default letter is provided here which indicates your acceptance of the business's response. If you wish, you may update it before sending it.] Better Business Bureau: I have reviewed the response made by the business in reference to complaint ID ********, and find that this resolution is satisfa…", "business_response_text": "September 4, 2026 BBB of ******************* & ******************** ***************************************************************************** ********************** Re: ***** ****** ******************************** Unit 267a ***********, ** 87114 Case Number: 25231522 D…" }, { "status": "Resolved", "page_link": "https://www.bbb.org/us/pa/philadelphia/profile/internet-providers/comcast-corporation-0241-80003221/complaints" , "date_filed": "2026-09-01", "complaint_text": "I have been trying to get set up with x finity WiFi for 11 days now. I spoke on the phone with 5 different customer service representatives all of which were not helpful at all. Then I researched the issue myself and called back to clearly explain my problem. And STILL I am waiting for wifi. My prob…", "complaint_type": "Service or Repair Issues", "customer_final_reply": "This issue has been resolved, thank you for your time and help!", "business_response_text": null }, { "status": "Answered", "page_link": "https://www.bbb.org/us/pa/philadelphia/profile/internet-providers/comcast-corporation-0241-80003221/complaints" , "date_filed": "2026-08-28", "complaint_text": "I had an account for wifi with Xfinity Comcast in starting August 9th 2025. I was charged $66.39 every month on the 4th. I was moving out of my place in *****, ** in June so May 31 I called them to cancel my account. It was successfully canceled and all I needed to do was return the modem that was p…", "complaint_type": "Service or Repair Issues", "customer_final_reply": "I just received an email saying my case was closed. I missed the previous emails. Am I able to reopen it or do I have to file again?", "business_response_text": "September 2, 2026 BBB of ******************* & ******************** ***************************************************************************** ********************** Re: ******** ***** OR 97221 Case Number:25216605 Date of Notice:August 29, 2026 To the Better Business Bureau: This letter respond…" } ], "profile_link": "https://www.bbb.org/us/pa/philadelphia/profile/internet-providers/comcast-corporation-0241-80003221" , "business_name": "Comcast Corporation", "total_complaints_last_3_years": 26591}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"bbb.org/get_business_complaints","input":{"business":"Comcast","location":"Philadelphia, PA"}}' # 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": "bbb.org/get_business_complaints" , "input": { "business": "Comcast", "location": "Philadelphia, PA" }})# 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": "bbb.org/get_business_complaints" , "input": { "business": "Comcast", "location": "Philadelphia, PA" } }), 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 bbb.org/get_business_complaints# with {"business":"Comcast","location":"Philadelphia, PA"}"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": [ "business", "location" ], "properties": { "business": { "type": "string", "description": "Business name, for example Comcast." }, "location": { "type": "string", "description": "City and state or ZIP code, for example Philadelphia, PA or 19103." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum published complaints to return, for example 20." } }}Output schema
{ "type": "object", "required": [ "business_name", "total_complaints_last_3_years", "profile_link", "complaints" ], "properties": { "complaints": { "type": "array", "items": { "type": "object", "required": [ "complaint_type", "date_filed", "status", "complaint_text", "business_response_text", "customer_final_reply", "page_link" ], "properties": { "status": { "type": [ "string", "null" ] }, "page_link": { "type": "string" }, "date_filed": { "type": [ "string", "null" ] }, "complaint_text": { "type": [ "string", "null" ] }, "complaint_type": { "type": [ "string", "null" ] }, "customer_final_reply": { "type": [ "string", "null" ] }, "business_response_text": { "type": [ "string", "null" ] } } } }, "profile_link": { "type": "string" }, "business_name": { "type": "string" }, "total_complaints_last_3_years": { "type": "integer" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
bbb.org/get_business_complaints- Returns
- business name, three-year complaint total, profile link, complaints (type, date filed, status, text, business response, customer final reply, page 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 bbb.org/get_business_complaints with the inputs above.
Ask your agent
- Pull the most recent complaints filed against Spectrum in Charlotte, NC on the Better Business Bureau, including how the company responded
- How many complaints has Roto-Rooter in 85004 received over the past three years? Show me the latest 10 with their status.
- I'm thinking of hiring Sunrun near San Diego, CA for solar panels — what are customers complaining about lately, and did the company reply?
- Get up to 50 published BBB complaints for Carvana in Tempe, Arizona, newest first, with the customer's final reply where there is one
- Look up bbb.org complaints for ABC Home Remodeling in Columbus, OH 43215 — I need the complaint type, filing date, and full text for each
See more
All BBB methodsFinds 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 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.
yellowpages.com/search_businessesFinds a dealership on Cars.com by name and city/state or ZIP and returns its latest customer reviews with its rating, address and phone.
cars.com/get_dealer_reviewsSummarizes NHTSA owner safety complaints for an exact vehicle model year, make, and model. Body-style variants are not combined; mileage is null when not given as a structured value.
nhtsa.gov/get_owner_complaintsFinds companies on Trustpilot by name or what they do, with TrustScore, review count, categories, location, logo and links. A preferred country moves companies listed in that country to the front.
trustpilot.com/search_companiesReads recent public Trustpilot reviews for a company by name, website or Trustpilot link, in every language, with its TrustScore, ratings, reviewer details and company replies. Reviews follow the chosen sort (most recent or most relevant) and star filters, starting from a chosen results page.
trustpilot.com/get_company_reviewsFinds a place on Google Maps by name and location and returns its public reviews in the chosen order.
google.com/get_place_reviewsFinds nearby GasBuddy stations for a US or Canadian city, address or postal code and lists their reported prices for a fuel grade, lowest listed price first.
gasbuddy.com/list_cheapest_gas_stations