# DiscoLike Company Search API
Canonical page: https://discolike.com/api/  |  Full reference: https://docs.discolike.com/  |  MCP alternative: https://discolike.com/mcp/

One GET returns ranked companies from an index of 80M+ crawled business websites. Pass a natural language ICP, up to 10 seed domains, exact homepage phrases, tech stack, size, country, or language. Firmographics come back on every record; contacts, enrichment, and CRM push are separate calls on the same key.

- Base URL: `https://api.discolike.com/v1`
- Auth header: `X-API-Key`, or an OAuth bearer token. Issue a key: https://docs.discolike.com/api/access/#api-keys
- OpenAPI 3.1: https://api.discolike.com/v1/openapi.json
- Python SDK: https://docs.discolike.com/sdk/ (reference https://docs.discolike.com/sdk/reference/, source https://github.com/Discolike/discolike-python, package https://pypi.org/project/discolike/)
- CLI: https://docs.discolike.com/cli/
- Requires a paid plan from $99/month. Count calls are free.

## Quick start

```bash
pip install "discolike[cli]"
discolike auth login        # browser OAuth, or --api-key KEY
discolike discover --icp-prompt "B2B SaaS for logistics" --max-records 5
```

## Examples

### Search by natural language ICP

Describe the ideal customer in plain English. icp_prompt extracts filters and seed domains from the sentence, then ranks matches from 80M+ crawled business websites.

Python:
```python
from discolike import Discolike
from discolike.requests import DiscoverParams

client = Discolike()  # reads DISCOLIKE_API_KEY
companies = client.discover(
    DiscoverParams(
        icp_prompt="cybersecurity for SMBs, managed IT, endpoint protection",
        country=["US"],
        max_records=100,
    )
)
for c in companies:
    print(c.domain, c.name, c.similarity)
```

CLI:
```bash
discolike discover \
  --icp-prompt "cybersecurity for SMBs, managed IT, endpoint protection" \
  --country US --max-records 100 --format json
```

HTTP: `GET https://api.discolike.com/v1/discover?icp_prompt=cybersecurity+for+SMBs%2C+managed+IT%2C+endpoint+protection&country=US&max_records=100`

Reference: https://docs.discolike.com/api/endpoints/discover/

### Lookalikes from seed domains

Pass up to 10 customer domains. Results are ranked by similarity to what those companies actually do on the web, not by shared LinkedIn tags.

Python:
```python
companies = client.discover(
    DiscoverParams(
        domain=["stripe.com", "adyen.com"],
        employee_range="51,500",
        max_records=500,
    )
)
```

CLI:
```bash
discolike discover \
  --domain stripe.com --domain adyen.com \
  --employee-range 51,500 --max-records 500 --format json
```

HTTP: `GET https://api.discolike.com/v1/discover?domain=stripe.com&domain=adyen.com&employee_range=51%2C500&max_records=500`

Reference: https://docs.discolike.com/api/endpoints/discover/

### Exact phrase on the homepage

Match text fragments that appear on the company homepage. Count first so the agent knows the size of the set before spending credits.

Python:
```python
from discolike.requests import CountParams

count = client.count(
    CountParams(
        phrase_match=["managed detection and response"],
        country=["DE"],
    )
)
print(count.count)
```

CLI:
```bash
discolike count \
  --phrase-match "managed detection and response" --country DE
```

HTTP: `GET https://api.discolike.com/v1/count?phrase_match=managed+detection+and+response&country=DE`

Reference: https://docs.discolike.com/api/endpoints/count/

## Creating the account from an agent

One unauthenticated POST creates the account. No credential is returned. The person receives a confirmation email, logs in at https://app.discolike.com, picks a plan from $99/month, and issues the API key or authorizes the MCP client. Free-mail and disposable domains are rejected; `409` means the account already exists.

```http
POST https://api.discolike.com/v1/public/signup
Content-Type: application/json

{
  "email": "jane@acme.com",
  "first_name": "Jane",
  "last_name": "Doe",
  "agent": "claude-code"
}
```

Prompt to give an agent:

> Create a DiscoLike account for me. Follow https://docs.discolike.com/guides/agent-signup/, ask me for anything you need, and tell me what to do next.

Guide: https://docs.discolike.com/guides/agent-signup/
Auth summary: https://discolike.com/auth.md

## FAQ

### What does the DiscoLike company search API do?

It returns ranked companies from an index of 80M+ crawled business websites. One GET /v1/discover call accepts a natural language ICP, lookalike seed domains, exact homepage phrases, tech stack, industry, employee range, revenue range, country, and language, and returns up to 10,000 records with firmographics per page.

### How do I authenticate?

Send the key in an X-API-Key header, or an OAuth bearer token in Authorization. Keys are issued under Settings, API Keys after login. The Python SDK reads DISCOLIKE_API_KEY from the environment. The full OpenAPI 3.1 description is at https://api.discolike.com/v1/openapi.json and the auth summary for agents is at https://discolike.com/auth.md.

### Is there a free API tier?

No. Every paid plan from $99 per month includes REST API access for internal use. Each search costs a query fee plus a fee per 1,000 new records. Companies retrieved in the last 90 days are cached and free, and GET /v1/count is free to call before a search.

### Can an agent sign up without a browser?

Yes. POST https://api.discolike.com/v1/public/signup with a JSON body of email, first_name, last_name, and agent needs no auth header. Free-mail and disposable domains are rejected, and 409 means the account already exists. The person gets a confirmation email and issues the API key after login.

### What are the rate limits?

Throughput scales with plan: Starter is the 1x baseline, Pro 2x, Team 3x, Company 5x, and Enterprise 20x. Bulk endpoints accept up to 10,000 rows per request. Ask for a higher ceiling through support if a pipeline needs it.

### Where does the data come from?

DiscoLike crawls business websites directly and validates each domain against its SSL certificate, which keeps parked and dead domains out of results. Firmographics, vendor detection, and site text come from that crawl and refresh every 90 days. Contact records are added on top of the companies the crawl finds.
