# Dealroom Power Law Company Profiles Scraper (`automation-lab/dealroom-power-law-company-profiles-scraper`) Actor

Filter 9,000+ companies from Dealroom public Power Law data by sector, country, tier, year, and valuation, with optional public profile enrichment.

- **URL**: https://apify.com/automation-lab/dealroom-power-law-company-profiles-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Dealroom Power Law Company Profiles Scraper

Export startup and scale-up intelligence from Dealroom’s anonymous public Power Law index.
Filter more than 9,000 indexed companies by sector, country, tier, founding year, valuation, or profile URL.
Optionally enrich selected companies from their public `dealroom.co` profile pages.

The Actor uses direct HTTP requests—no login, browser, or proxy is required.
It intentionally does not access locked data from `app.dealroom.co`.

### What does this Dealroom scraper do?

The Actor downloads Dealroom’s public Power Law index once per run, validates its structure, applies filters locally, and saves normalized company records to the default dataset.

You can use it to:

- build startup and scale-up market maps;
- refresh CRM company lists;
- compare valuation cohorts;
- find companies by sector, country, or Power Law tier;
- collect public IPO and exit labels;
- enrich selected profiles with public KPI ranges and investor groups;
- monitor changes by scheduling repeat runs and comparing datasets.

Optional enrichment adds only information rendered on anonymous public profile pages.
Ranges such as `$10–50B` remain ranges; the Actor does not invent or unlock exact premium values.

### Who is it for?

- **VC and PE analysts** building sector, geography, and valuation cohorts.
- **Startup scouts** finding companies that match an investment thesis.
- **Corporate development teams** researching competitors, acquisitions, and market structure.
- **B2B sales teams** preparing targeted account lists for CRM import.
- **Market researchers** tracking public company, talent, footprint, and sentiment signals.
- **Data teams** feeding Dealroom’s public index into warehouses, spreadsheets, or BI tools.

Choose this Actor when the public Power Law company universe is the right source.
It is not a replacement for a licensed Dealroom account or the locked `app.dealroom.co` product.

### Why use this Actor?

- **HTTP-first:** no browser overhead or browser-level anti-bot complexity.
- **Large public universe:** the observed index contains 9,052 company records.
- **Local filtering:** one index request supports multiple filters efficiently.
- **Precise targeting:** pass Dealroom company profile URLs for a bounded company list.
- **Optional enrichment:** avoid profile requests when index fields are enough.
- **Typed output:** stable field names for datasets, APIs, and integrations.
- **Transparent gaps:** unavailable profile enrichment is marked rather than silently fabricated.
- **Conservative requests:** profile enrichment concurrency defaults to 3 and is capped at 8.

### What data can you extract?

| Field | Meaning |
|---|---|
| `name`, `slug` | Company identity in Dealroom |
| `industries` | Detailed industry labels from the index |
| `headquarters`, `country` | Public headquarters location |
| `sector` | Simplified Dealroom sector |
| `foundedYear` | Founding year |
| `valuationUsd` | Numeric valuation from the public index |
| `valuationLabel` | Compact displayed valuation such as `$13B` |
| `tier` | Power Law tier such as Unicorn or Decacorn |
| `exitStatus` | Public IPO or exit label |
| `logoUrl` | Public company logo URL |
| `profileUrl` | Public `dealroom.co` company profile |
| `publishedLocally` | Published-locally flag reported by the index |
| `description` | Public JSON-LD description when enriched |
| `valuationRange` | Public profile valuation range |
| `valuationDate` | Caption or date attached to valuation |
| `revenueRange` | Public profile revenue range |
| `headcountRange` | Public profile team-size range |
| `investorsByStage` | Public investor names grouped by entry stage |
| `ownershipSummary` | Text from the public ownership section |
| `alumniSummary` | Text from the public company-mafia section |
| `footprintSummary` | Text from the public global-footprint section |
| `talentSummary` | Text from the public talent-graph section |
| `patentSummary` | Text from the public patent section |
| `dealsSummary` | Text from public investments and acquisitions |
| `sentimentSummary` | Text from the public market-sentiment section |
| `enrichmentStatus` | `not_requested`, `enriched`, or `unavailable` |
| `sourceGeneratedAt` | Timestamp reported by the source index |
| `scrapedAt` | Timestamp when this Actor produced the record |

Fields may be `null` when Dealroom does not publish the corresponding value.
Section summaries are normalized public text and are capped to keep records practical.

### Getting started

1. Open the Actor input page.
2. Leave company URLs empty to search the full public Power Law index.
3. Add country, sector, tier, year, valuation, or text filters.
4. Set `maxItems` to the maximum records you need.
5. Enable `enrichProfiles` only when public profile details are useful.
6. Start the run.
7. Export the dataset as JSON, CSV, Excel, XML, or another supported format.

A small index-only run is the fastest way to test a new filter combination.

### Input parameters

| Parameter | Type | Default | Description |
|---|---:|---:|---|
| `startUrls` | array | empty | Dealroom company profile URLs or slugs |
| `searchTerms` | string array | `[]` | Every term must match identity, industry, location, sector, or tier text |
| `countries` | string array | `[]` | Exact country names, case-insensitive |
| `sectors` | string array | `[]` | Exact simplified sectors, case-insensitive |
| `tiers` | string array | `[]` | Exact Power Law tiers, case-insensitive |
| `foundedFrom` | integer | unset | Earliest founding year |
| `foundedTo` | integer | unset | Latest founding year |
| `valuationMinUsd` | integer | unset | Minimum index valuation in USD |
| `valuationMaxUsd` | integer | unset | Maximum index valuation in USD |
| `enrichProfiles` | boolean | `false` | Fetch public company profile pages |
| `maxItems` | integer | `100` | Maximum saved companies, up to 9,052 |
| `profileConcurrency` | integer | `3` | Concurrent profile requests, from 1 to 8 |

All filters also apply to companies supplied through `startUrls`.
Unknown URLs are reported in the log and are not emitted as made-up records.
Duplicate profile URLs fail validation to prevent duplicate output.

#### Example: search for US AI unicorns

```json
{
  "countries": ["United States"],
  "sectors": ["AI"],
  "tiers": ["Unicorn"],
  "maxItems": 100
}
```

#### Example: enrich one public profile

```json
{
  "startUrls": [
    { "url": "https://dealroom.co/companies/openai" }
  ],
  "enrichProfiles": true,
  "maxItems": 1
}
```

### Output example

A current enriched profile record has this shape:

```json
{
  "name": "OpenAI",
  "slug": "openai",
  "industries": ["Enterprise Software"],
  "headquarters": "San Francisco, United States",
  "country": "United States",
  "sector": "AI",
  "foundedYear": 2015,
  "valuationUsd": 852000000000,
  "valuationLabel": "$852B",
  "tier": "Centicorn",
  "exitStatus": null,
  "profileUrl": "https://dealroom.co/companies/openai",
  "description": "Maker of ChatGPT. AI research and deployment focused on AGI and generative models",
  "valuationRange": "$500B–1T",
  "valuationDate": "Latest valuation · Mar/2026",
  "revenueRange": "$10–50B",
  "headcountRange": "5–10k",
  "investorsByStage": [
    { "stage": "Seed", "investors": ["Khosla Ventures", "Y Combinator"] }
  ],
  "enrichmentStatus": "enriched",
  "sourceGeneratedAt": "2026-05-01T11:32:57.142Z",
  "scrapedAt": "2026-07-28T04:00:00.000Z"
}
```

Source values can change between runs.
The dataset schema includes every emitted field, including optional section summaries.

### How much does it cost to scrape Dealroom company profiles?

The Actor uses pay-per-event pricing:

- a **$0.005 start fee** per run;
- one `item` event for each company record saved;
- no separate event charge for optional profile enrichment.

Current item pricing decreases by platform tier:

| Tier | Price per saved company |
|---|---:|
| Free | $0.00115 |
| Bronze | $0.00100 |
| Silver | $0.00078 |
| Gold | $0.00060 |
| Platinum | $0.00040 |
| Diamond | $0.00028 |

At the Free-tier event price, 100 saved companies cost about **$0.12**, including the start fee.
One thousand saved companies cost about **$1.16**.
A one-company enriched profile costs about **$0.0062**.

You are charged for saved company records, not rejected filters, missing profiles, or failed records.
Apify displays the exact charge estimate for your account and run.

### Efficient and reliable runs

- Start with index-only output and enable enrichment only when needed.
- Use `startUrls` to bound a known account list.
- Apply filters before raising `maxItems`.
- Keep `profileConcurrency` at 3 unless you have measured a larger workflow.
- Schedule repeat runs at a cadence appropriate for the source snapshot.
- Use `sourceGeneratedAt` to distinguish source freshness from `scrapedAt`.
- Treat an empty dataset as a valid no-match result when filters are restrictive.

The Actor retries transient network and server failures with bounded retries.
Malformed input, unsupported domains, and structurally invalid source responses fail the run rather than returning misleading empty success.

### Limitations

- Coverage is limited to Dealroom’s anonymous public Power Law index.
- The Actor does not log in or access `app.dealroom.co`.
- Public profiles can expose ranges instead of exact premium values.
- Profile sections vary by company; absent sections remain `null` or empty.
- Dealroom may update field labels, HTML structure, records, or the index generation schedule.
- `maxItems` follows source order after filtering; it is not a custom ranking algorithm.
- Text search is a case-insensitive substring match, not semantic search.
- Profile enrichment is HTTP-based and does not execute client-side interactions.

### Workflow ideas

#### VC market map

Filter by country, sector, tier, and founding year.
Export CSV to a spreadsheet, then add internal thesis and owner columns.

#### CRM refresh

Supply known Dealroom profile URLs, enable enrichment, and map stable `slug` or `profileUrl` values to CRM company IDs.
Use `scrapedAt` for refresh auditing.

#### Valuation cohort monitor

Schedule a recurring run with valuation thresholds.
Compare `valuationUsd`, `valuationLabel`, and `tier` against the previous dataset.

#### Corporate development research

Enrich a bounded company list and inspect public investor, ownership, footprint, patent, deals, and sentiment sections.
Treat these fields as research signals, not investment advice.

#### Data warehouse ingestion

Call the Actor through the API, wait for completion, and load the default dataset items endpoint into your warehouse.
Use the stable field names from `dataset_schema.json`.

### API usage with cURL

Replace `APIFY_TOKEN` with your token:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~dealroom-power-law-company-profiles-scraper/runs?token=APIFY_TOKEN&waitForFinish=120" \
  -H "Content-Type: application/json" \
  -d '{
    "countries": ["United States"],
    "sectors": ["AI"],
    "maxItems": 25
  }'
```

Fetch results from the run’s `defaultDatasetId` or use an Apify client.

### API usage with JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/dealroom-power-law-company-profiles-scraper').call({
  countries: ['United States'],
  sectors: ['AI'],
  enrichProfiles: false,
  maxItems: 25,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/dealroom-power-law-company-profiles-scraper").call(
    run_input={
        "countries": ["United States"],
        "sectors": ["AI"],
        "maxItems": 25,
    }
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### Use with Apify MCP

Add the Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/dealroom-power-law-company-profiles-scraper"
```

#### Claude Desktop

Add this JSON to your Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/dealroom-power-law-company-profiles-scraper"
    }
  }
}
```

#### Cursor

Add the same `mcpServers.apify` entry to your Cursor MCP settings, then restart Cursor so the Actor tool is discovered.

#### VS Code

Add the same HTTP MCP server URL through your VS Code MCP extension or workspace MCP configuration.
Keep `APIFY_TOKEN` in the client environment when authentication is requested; never commit it.

Example prompts:

- “Find up to 50 US cybersecurity unicorns in Dealroom.”
- “Enrich these five public Dealroom company profile URLs.”
- “Build a CSV-ready list of UK fintech companies founded since 2020.”

### Integrations

Send dataset results to:

- Google Sheets for analyst review;
- Airtable or a CRM for account enrichment;
- Slack or email for monitored cohort changes;
- BigQuery, Snowflake, or another warehouse;
- Zapier or Make for no-code workflows;
- custom applications through `apify-client`.

Use stable URL or slug fields for deduplication.
Do not use company names alone as identifiers because names can change or collide.

### Responsible use and legality

This Actor accesses anonymous public pages at `dealroom.co`.
You are responsible for complying with Dealroom’s terms, applicable law, and your organization’s policies.

Do not use results for unlawful discrimination, harassment, spam, or misleading financial claims.
Do not treat valuation ranges or sentiment indicators as verified investment advice.
Store and share company data only for a lawful purpose.
The Actor does not bypass authentication or unlock premium fields.

### Troubleshooting

#### Why did my run return zero records?

Check exact country, sector, and tier spellings.
All `searchTerms` must match each company, and all filters are combined.
Start with one filter, inspect results, and then narrow the input.

#### Why is `enrichmentStatus` set to `unavailable`?

The index record was saved, but the corresponding public profile could not be parsed or fetched.
Inspect the run log and retry later if the source had a transient problem.
The Actor does not fabricate enrichment fields.

#### Why was my URL rejected?

Only `dealroom.co/companies/{slug}` profile URLs or plain company slugs are supported.
Locked `app.dealroom.co` URLs and unrelated domains are intentionally rejected.

#### Why are valuation or revenue values ranges?

That is how Dealroom renders those values publicly.
The Actor preserves ranges instead of claiming unavailable precision.

#### How do I reduce runtime?

Disable `enrichProfiles`, lower `maxItems`, or provide a short `startUrls` list.
The full public index is fetched only once per run.

### Related Automation Lab actors

- [Craft.co Company Intelligence Scraper](https://apify.com/automation-lab/craft-co-company-intelligence-scraper) for another public company-intelligence source.
- [Tracxn Startup & Company Intelligence Scraper](https://apify.com/automation-lab/tracxn-company-intelligence-scraper) for startup discovery from Tracxn’s public surface.
- [LinkedIn Company Scraper](https://apify.com/automation-lab/linkedin-company-scraper) for public company presence and profile fields on LinkedIn.
- [SEC Company Facts API Scraper](https://apify.com/automation-lab/sec-company-facts-api-scraper) for official US public-company filing facts.

Use related Actors only when their source and output match your research objective.

### FAQ

#### Does this Actor require a Dealroom account?

No. It targets the anonymous public Power Law index and public company profile pages.

#### Does it use a proxy or browser?

No by default. The current routes work with direct HTTP requests.

#### Can I scrape all indexed companies?

Yes. Set `maxItems` up to 9,052, subject to the current source size.
Start with a smaller run to verify the output and cost.

#### Does enrichment cost a separate event?

No. Each saved company emits one `item` event whether enrichment is disabled, successful, or unavailable.

#### Can I filter explicit profile URLs?

Yes. Country, sector, tier, year, valuation, and search filters are applied to explicit profile selections too.

#### Is the data real-time?

No guarantee is made. `sourceGeneratedAt` reports the source snapshot timestamp, while `scrapedAt` reports when the Actor emitted the record.

#### What happens if Dealroom changes the response format?

The Actor validates status, content type, and index shape.
A structural index failure stops the run rather than returning a misleading empty dataset.
Optional profile failures preserve valid index records and mark enrichment unavailable.

# Actor input Schema

## `startUrls` (type: `array`):

Optional Dealroom company profile URLs. When provided, only these companies are considered, and all filters still apply.

## `searchTerms` (type: `array`):

Return companies matching every term across name, slug, industries, location, sector, and tier.

## `countries` (type: `array`):

Exact country names, case-insensitive, such as United States or Germany.

## `sectors` (type: `array`):

Exact simplified Dealroom sectors, case-insensitive, such as AI, Fintech, or Cybersecurity.

## `tiers` (type: `array`):

Exact tiers, case-insensitive, such as Unicorn, Decacorn, Centicorn, Colt, or Thoroughbred.

## `foundedFrom` (type: `integer`):

Earliest founding year to include.

## `foundedTo` (type: `integer`):

Latest founding year to include.

## `valuationMinUsd` (type: `integer`):

Minimum numeric valuation in US dollars from the public index.

## `valuationMaxUsd` (type: `integer`):

Maximum numeric valuation in US dollars from the public index.

## `enrichProfiles` (type: `boolean`):

Fetch each selected public profile to add description, public KPI ranges, investors, and labelled section summaries.

## `maxItems` (type: `integer`):

Maximum number of matching company records to save.

## `profileConcurrency` (type: `integer`):

Number of optional public profile requests processed at once. Keep this conservative to reduce source load.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://dealroom.co/companies/openai"
    },
    {
      "url": "https://dealroom.co/companies/palantir"
    }
  ],
  "searchTerms": [
    "AI"
  ],
  "countries": [],
  "sectors": [],
  "tiers": [],
  "enrichProfiles": false,
  "maxItems": 20,
  "profileConcurrency": 3
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing normalized Dealroom company records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://dealroom.co/companies/openai"
        },
        {
            "url": "https://dealroom.co/companies/palantir"
        }
    ],
    "searchTerms": [
        "AI"
    ],
    "enrichProfiles": false,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/dealroom-power-law-company-profiles-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [
        { "url": "https://dealroom.co/companies/openai" },
        { "url": "https://dealroom.co/companies/palantir" },
    ],
    "searchTerms": ["AI"],
    "enrichProfiles": False,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/dealroom-power-law-company-profiles-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://dealroom.co/companies/openai"
    },
    {
      "url": "https://dealroom.co/companies/palantir"
    }
  ],
  "searchTerms": [
    "AI"
  ],
  "enrichProfiles": false,
  "maxItems": 20
}' |
apify call automation-lab/dealroom-power-law-company-profiles-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/dealroom-power-law-company-profiles-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YwsYow51bl5q0AhqF/builds/WiJXbC0GLe5SlgXoU/openapi.json
