> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brightdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Business Search quickstart

> Send your first Business Search request. One [POST /search/company](/api-reference/business-search/search-company) call in Instant mode returns up to 10 records with req_id and meta.

In this quickstart we run one company search with cURL, Python or Node.js and read the three parts of the response: `req_id`, `meta` and `documents`.

## Prerequisites

* A Bright Data account with Business Search access. Business Search is in early access; if you don't have access, email [sales@brightdata.com](mailto:sales@brightdata.com)

## Step 1: Get and set your API key

Go to the [user settings page](https://brightdata.com/cp/setting/users) in your Bright Data account and create an API key, or use one you already have. Your API key is shown only once when created, so copy and store it securely. See [Authentication](/api-reference/authentication).

We store the key in an environment variable so it never appears in a command history or a committed file. The request in the next step reads it from there:

```bash theme={null}
export BRIGHTDATA_API_KEY="YOUR_API_KEY"
```

## Step 2: Send a company search

We use [Instant mode](/products/business-search/introduction#search-modes) to find US software companies with 50 to 500 employees. `view: "summary"` asks for a compact record instead of the default `id_only`:

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST "https://api.brightdata.com/search/company" \
    --header "Authorization: Bearer $BRIGHTDATA_API_KEY" \
    --header "Content-Type: application/json" \
    --data '{
      "source": "linkedin_company",
      "mode": "instant",
      "query": "US software companies with 50 to 500 employees",
      "offset": 0,
      "limit": 10,
      "view": "summary"
    }'
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.brightdata.com/search/company",
      headers={
          "Authorization": f"Bearer {os.environ['BRIGHTDATA_API_KEY']}",
          "Content-Type": "application/json",
      },
      json={
          "source": "linkedin_company",
          "mode": "instant",
          "query": "US software companies with 50 to 500 employees",
          "offset": 0,
          "limit": 10,
          "view": "summary",
      },
  )

  print(response.text)
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://api.brightdata.com/search/company", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${process.env.BRIGHTDATA_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      source: "linkedin_company",
      mode: "instant",
      query: "US software companies with 50 to 500 employees",
      offset: 0,
      limit: 10,
      view: "summary",
    }),
  });

  console.log(await response.text());
  ```
</CodeGroup>

The request returns HTTP 200 and a JSON body that starts with `req_id`. Every tab prints that body.

If the body is `{"error":"Invalid token"}` with HTTP 401, the key is missing, invalid or expired. Check the value you exported in Step 1. HTTP 403 means the account behind the key is inactive or not on the Business Search allowlist yet. Email [sales@brightdata.com](mailto:sales@brightdata.com) to request access.

## Step 3: Read the response

A successful response contains request metadata and a `documents` array. This is the first of the 10 records from a real run, with `url` and `logo` omitted:

```json theme={null}
{
  "req_id": "ra7672a1925f744ebb592ec88b9f6bbf1",
  "source": "linkedin_company",
  "meta": {
    "coverage_percent": 100,
    "matched": 605,
    "offset": 0,
    "limit": 10
  },
  "documents": [
    {
      "bright_id": "7b8d489b82344beae097e05cddfcf1da56ed51e37fab6fc64b2ca58e7b0713bd",
      "data": {
        "name": "SourceForge",
        "slogan": "The complete software platform. SourceForge is the largest B2B software review and comparison directory in the world.",
        "industry": "Software Development",
        "headquarters_location": "San Diego, California",
        "headquarters_country_code": "US",
        "offices_cities": ["San Diego"],
        "company_size_from": 51,
        "company_size_to": 200,
        "employees_in_linkedin": 59,
        "linkedin_followers": 39183,
        "website": "https://sourceforge.net/",
        "domain": "sourceforge.net"
      }
    }
  ]
}
```

Your `req_id`, `matched` count and records will differ from this sample. The index refreshes daily, so results move between runs.

`req_id` identifies the request. Keep it for troubleshooting and include it in support tickets.

How to read what came back:

* An empty `documents` array means the search ran and matched nothing. It is not proof that no such company exists.
* `meta.matched` is a lower bound on the matches the search reached, not a total, and it moves between runs.
* `meta.coverage_percent` below 100 means part of the index did not answer in time, so the result set is partial.

## What you built and where to go next

We sent a natural-language company search and read the records it returned. Next, decide whether you need a broad candidate set or a ranked shortlist in [What is Business Search?](/products/business-search/introduction#search-modes). Then write your first structured query with [Business Search query syntax](/products/business-search/query-syntax).
