Product Reports Resources Pricing Login Book a demo

Cookbook 04 ยท Competitive intelligence

Build a competitive landscape from one company

Start with a known startup, rank similar companies, and explain each result with shared taxonomy evidence.

Python 10 minutes 2 API calls Intermediate
python similar_companies.py Dealroom ranked
GET /data/companies/{id}/similar

filter = and(
  hq_location[eq]:34,
  is_startup[eq]:true,
  company_status[eq]:operational
)

Loading real matches...

12ranked companies
7countries
6companies hiring

The goal

Turn one known company into a market research starting point

Category searches work when you already know the taxonomy. Anchor-based discovery starts from something more natural: a company that represents the market you want to understand.

Use Cerrion, the industrial AI company from Cookbooks 01 and 03, to find operational European startups with similar sector and technology patterns.

The result is a ranked competitive set for analyst review. It can seed a market map, competitor monitor, partnership scan, or comparable-company list.

Discovery, not classification

A high rank means strong taxonomy overlap. It does not prove that two companies have identical products, buyers, pricing, or technical approaches.

Ranking model

Let Dealroom rank, then expose the evidence

The similar-companies endpoint ranks candidates using weighted overlap across six categorical dimensions. The API owns that ordering, so your application does not need to invent a similarity score.

DimensionWhat it helps capture
SectorThe market or problem area
Sub-industry and industryMore specific commercial context
TechnologyThe technical approach or enabling layer
Client focusThe type of customer served
Income streamHow the company earns revenue

The downloadable script intersects the returned tags with the anchor tags only to explain the result. It preserves the API ranking unchanged.

Data retrieval

Fetch the anchor, then its ranked peers

Use the company UUID, not its name, as the stable identifier. Fetching entity detail first gives you the tags needed for an inspectable output.

similar_companies.py
anchor = client.get(
    f"/data/entities/{company_id}",
    {"currency": "USD"},
)["data"]

response = client.get(
    f"/data/companies/{company_id}/similar",
    {
        "filter": filter_value,
        "limit": 12,
        "include_total": "true",
        "currency": "USD",
    },
)

The endpoint is force-sorted by similarity. Pagination supports up to 1,000 candidates across offset and limit, with a maximum page size of 500.

Candidate control

Filter before the similarity ranking runs

The endpoint accepts the full company filter DSL. Filters define the eligible candidate pool; similarity determines the order inside that pool.

European operational startups
filter_value = (
    "and(hq_location[eq]:34,"
    "is_startup[eq]:true,"
    "company_status[eq]:operational)"
)

Add funding, founding year, employee count, or any other supported company filter when the research question requires it. Leave the filter out when you want the broadest possible peer set.

Explanation layer

Show why a result belongs on the review list

A rank without context is hard to trust. Match returned tags to the anchor by type and ID, then display the shared names beside each company.

tag intersection
anchor_keys = {tag_key(tag) for tag in anchor_tags}
shared = [
    tag for tag in company_tags
    if tag_key(tag) in anchor_keys
]

Keep this explanation separate from the ranking. The shared tags are evidence available to your application, not a reproduction of Dealroom's internal weighting.

Real output

Inspect Cerrion's competitive landscape

Dealroom-ranked European startups with the shared taxonomy made visible.

JSON

Loading the competitive landscape...

Snapshot generated from the Dealroom API. Re-run the script for current rankings and company data.

Research discipline

Keep similarity separate from competitive truth

Use the ranked set as an efficient research queue and keep these constraints attached:

  • Taxonomy overlap does not prove direct product competition.
  • Filters change the candidate pool before ranking.
  • Shared tags do not reveal the private weights used by the model.
  • Tags and headline company metrics can change as coverage improves.
  • Commercial positioning still needs product, customer, and market validation.

Complete example

Download the landscape generator

The file includes OAuth2 authentication, bounded retries, optional company filters, tag explanations, Markdown output, and structured JSON.