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

# Free Company Search Database

> Columns, SQL limits, and stored-data semantics for the free company search tools.

Use `free_simple_company_search` to query a shared company dataset with SQL.
It is for exact resolution, bounded list building, and coverage review—not live
web discovery.

This Deepline Native tool reads a shared Snowflake `companies` table of roughly
35 million source records. It does not call a live provider API. Deepline loads
a People Data Labs CSV snapshot into the read-only table.

> [!NOTE]
>
> `free_simple_company_search` and `materialize_free_customer_companies` have no
> Deepline credit charge. They are still bounded: broad queries can time out,
> and Deepline limits each workspace to five requests per second.

## Snapshot and schema

The production loader expects the raw PDL company CSV header:

```txt theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
country,founded,id,industry,linkedin_url,locality,name,region,size,website
```

Deepline transforms that source into the query table:

| Source field | Deepline column |
| - | - |
| `id` | `source_record_id` |
| `website` | `domain`, `normalized_domain` |
| `name` | `company_name` |
| `industry` | `industry` |
| `locality`, `region`, `country` | `location` |
| `linkedin_url` | `linkedin_url` |
| `size` | `employee_count` |
| `founded` | `year_founded` |

Deepline sets `updated_at` when it loads the table. This timestamp identifies when Deepline imported or updated the record.
The timestamp does not prove that PDL recently observed the company.

## Schema

Query the table as `companies`. `public.companies` also works for compatibility.

| Column | Type | Notes |
| - | - | - |
| `source_record_id` | text | Source row id from the snapshot. |
| `normalized_domain` | text | Lowercase root domain with protocol, `www.`, path, and trailing dot removed. Fastest lookup key when you have a domain. |
| `domain` | text | Original website/domain from the source. |
| `company_name` | text | Company name. Required in the loaded table. |
| `industry` | text | Source industry label, for example `Computer Software`. |
| `location` | text | Comma-separated locality, region, country. |
| `linkedin_url` | text | LinkedIn company URL or slug from the source. |
| `employee_count` | integer | Upper bound of the source size bucket: `10`, `50`, `200`, `500`, `1000`, `5000`, `10000`, or `10001` for `10000+`. |
| `year_founded` | integer | Source founding year when present. |
| `updated_at` | timestamp | Deepline load/update timestamp. |

## SQL rules and limits

* SQL must be a single statement.
* The tool accepts only `SELECT`, `WITH`, or `EXPLAIN` statements.
* The statement must read from `companies` or `public.companies`.
* Each query must include a top-level `LIMIT` of `100000` or less.
* Queries have a 30-second Snowflake timeout. Broad `ILIKE '%keyword%'`, long
  `OR` chains, large country-wide scans, and expensive `GROUP BY` shapes can
  time out.
* Workspaces are rate-limited to five requests per second.
* The response returns matching records in `rows`. Use `deepline tools execute free_simple_company_search --input "$PAYLOAD" --out companies.csv` when you want to save direct CLI results as CSV.

## Materialization contract

`materialize_free_customer_companies` runs a bounded query and upserts matching
rows into `enrichments.companies` in your workspace. Its query must return only
`domain`, `company_name`, `industry`, `location`, `linkedin_url`,
`employee_count`, and `year_founded`.

For query patterns, CLI/API calls, and saving results, see
[Search and save free company data](https://deepline.com/docs/recipes/search-free-companies.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.