Get a company
One company's full card. Contact details are masked and domain and website are null until you reveal it. This read never spends quota. It spends one company from your daily budget unless you already revealed it.
GEThttps://findbytown.com/api/v1/businesses/{id}No quota
Path parameters
| Name | Type | Description |
|---|---|---|
| id(required) | integer | Company id, an integer. |
Parameters
| Name | Type | Description |
|---|---|---|
| locale | en | fr | es | Language of labels and category names: en, fr or es. Defaults to the language of your account. |
Examples
curl "https://findbytown.com/api/v1/businesses/1001" \
-H "Authorization: Bearer fbt_EXAMPLE_not_a_real_key_0000"const res = await fetch("https://findbytown.com/api/v1/businesses/1001", {
headers: { Authorization: "Bearer fbt_EXAMPLE_not_a_real_key_0000" },
});
const body = await res.json();
if (!res.ok) throw new Error(body.error);
console.log(body);import requests
res = requests.get(
"https://findbytown.com/api/v1/businesses/1001",
headers={"Authorization": "Bearer fbt_EXAMPLE_not_a_real_key_0000"},
)
body = res.json()
if not res.ok:
raise RuntimeError(body["error"])
print(body)Response
Example with fake values:
{
"data": {
"id": 1001,
"domain": null,
"name": "Example Plumbing",
"website": null,
"zone": "fr_idf",
"zoneLabels": {
"en": "Example Region",
"fr": "Région Exemple",
"es": "Región Ejemplo"
},
"country": "FR",
"precision": "exact",
"address": "1 Example Street",
"city": "Exampleville",
"quality": 80,
"provider": "google",
"providerDetail": "Google Workspace",
"hasPhone": true,
"contactsCount": 1,
"otherEmailsCount": 0,
"description": "Plumbing and heating repairs.",
"logoUrl": null,
"social": {},
"openingHours": null,
"activity": "Plumber",
"categories": [
"Heating contractor"
],
"websiteTitle": null,
"postalCode": "00000",
"adminArea": "Example Region",
"fullAddress": "1 Example Street, 00000 Exampleville",
"mapsUrl": null,
"rating": 4.6,
"reviews": 25,
"facts": null,
"extraPhonesCount": 0,
"primaryEmailMasked": "c•••@•••",
"phoneMasked": "+33 1 •• •• •• 00",
"revealed": false,
"contact": null
}
}Errors
| Code | HTTP status | Meaning |
|---|---|---|
| validation_error | 400 | A parameter is missing or has the wrong form. details names it. |
| unknown_parameter | 400 | A query parameter is not one this endpoint knows, usually a typing mistake. details names it. |
| use_reveal_endpoint | 400 | You sent reveal= on a read. Reads never spend quota: use the reveal endpoint. |
| bad_id | 400 | The company id is not a positive integer. |
| missing_api_key | 401 | No Authorization header, or an empty one. |
| invalid_api_key | 401 | The key does not exist or has been revoked. |
| plan_without_api | 403 | The account's current plan does not include the API. Applies from the moment a plan ends. |
| suspended | 403 | The account is suspended. Its keys start working again if the suspension is lifted. |
| not_found | 404 | No such company, or it was removed at its owner's request. |
| rate_limited | 429 | Too many requests this minute. Wait for the number of seconds in Retry-After. |
| budget_exhausted | 429 | You reached today's budget of distinct companies. Companies already seen today still pass. Retry-After says when it resets. |
| blocked | 429 | Access to company data is temporarily paused because of automated use, such as walking through ids. Retry-After gives the time left. Write to support if this is a mistake. |
| internal_error | 500 | Something went wrong on our side. Quote requestId when writing to support. |