Skip to content
Documentation menu

Search companies

Lists companies matching the filters, best quality first unless you ask for another order. Rows spend your daily budget of companies, not your reveal quota. domain, website and contact stay null until you have revealed the company.

GEThttps://findbytown.com/api/v1/businessesNo quota

Parameters

NameTypeDescription
countrystringTwo-letter country code, such as FR. See GET /countries.
zonestringZone slug, such as fr_idf. See GET /zones.
citystringTown name in any language: Cologne also finds Köln.
nearstringRadius search as lon,lat,km, up to 200 km. Only companies with a real location match.
nearNamestringName of the place in near: companies with no exact location match when their own address names it.
postcodestringStart of a postcode: 75011, or just 75 for all of them. Up to 4, separated by commas.
deptstringFrench department code, such as 69 for the Rhône.
polystringPolygon as "lon lat" vertices separated by semicolons, 3 to 60 vertices.
qstringKeywords, up to 6 words, matched across name, description, address and categories. A domain matches only when typed whole.
categorystringBroad category slug. See GET /categories.
tradestringTrade key, a family of related categories. See GET /categories.
gcatstringOne exact listed category, ignoring case.
providerown_smtp | google | microsoft | yahoo | invalid | unknownMail provider family of the company.
providerDetailstringExact mail provider name, ignoring case.
hasPhonebooleantrue: only companies with a phone number on file.
noPhonebooleantrue: only companies with no phone number on file.
hasContactsbooleantrue: only companies with named contacts.
noContactsbooleantrue: only companies with no named contacts.
hasOtherEmailsbooleantrue: only companies with more than one email address.
qminintegerLowest quality score, 0 to 100.
qmaxintegerHighest quality score, 0 to 100.
precisionstringComma list of location precisions: exact, city, region, country.
approxbooleanfalse: only companies with an exact location. Default true.
minRatingnumberLowest rating, 0 to 5.
minReviewsintegerLowest number of reviews.
sizeClassPME | ETI | GERegistry size class. Registry facts are only known for some French companies.
headcountstringOne registry headcount band as stored, such as 20-49.
minHeadcountintegerLowest registry headcount: a company counts from the bottom of its band.
minRevenuenumberLowest registry revenue, in euros.
legalFormstringRegistry legal form, ignoring case.
sortquality | distance | rating | reviewsOrder of results. distance needs near.
bboxstringMap box as minLng,minLat,maxLng,maxLat.
pageintegerPage number, from 1. The last page you can reach is in maxPage.
perPageintegerRows on a page. A larger number is read as the maximum, and the response says which applied.
localeen | fr | esLanguage of labels and category names: en, fr or es. Defaults to the language of your account.

Examples

curl "https://findbytown.com/api/v1/businesses?country=FR&trade=plumber&perPage=1" \
  -H "Authorization: Bearer fbt_EXAMPLE_not_a_real_key_0000"

Response

Example with fake values:

{
  "data": [
    {
      "id": 1001,
      "name": "Example Plumbing",
      "domain": null,
      "website": null,
      "revealed": false,
      "zone": "fr_idf",
      "country": "FR",
      "precision": "exact",
      "quality": 80,
      "provider": "google",
      "providerDetail": "Google Workspace",
      "hasPhone": true,
      "hasEmail": true,
      "contactsCount": 1,
      "otherEmailsCount": 0,
      "city": "Exampleville",
      "adminArea": "Example Region",
      "postalCode": "00000",
      "address": "1 Example Street",
      "fullAddress": "1 Example Street, 00000 Exampleville",
      "activity": "Plumber",
      "category": "Plumber",
      "categories": [
        "Heating contractor"
      ],
      "websiteTitle": null,
      "description": "Plumbing and heating repairs.",
      "mapsUrl": null,
      "rating": 4.6,
      "reviews": 25,
      "distanceM": null,
      "facts": null,
      "contact": null
    }
  ],
  "page": 1,
  "perPage": 1,
  "total": 128,
  "maxPage": 200,
  "hasMore": true,
  "capped": false
}

Errors

CodeHTTP statusMeaning
validation_error400A parameter is missing or has the wrong form. details names it.
unknown_parameter400A query parameter is not one this endpoint knows, usually a typing mistake. details names it.
use_reveal_endpoint400You sent reveal= on a read. Reads never spend quota: use the reveal endpoint.
missing_api_key401No Authorization header, or an empty one.
invalid_api_key401The key does not exist or has been revoked.
plan_without_api403The account's current plan does not include the API. Applies from the moment a plan ends.
suspended403The account is suspended. Its keys start working again if the suspension is lifted.
rate_limited429Too many requests this minute. Wait for the number of seconds in Retry-After.
budget_exhausted429You reached today's budget of distinct companies. Companies already seen today still pass. Retry-After says when it resets.
blocked429Access 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_error500Something went wrong on our side. Quote requestId when writing to support.

Back to findbytown