# Owler Company Scraper (`parsebird/owler-company-scraper`) Actor

Scrape company intelligence from Owler by domain, name, or URL: firmographics, competitors, funding, acquisitions, investments, leadership, and news events. Export as JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/owler-company-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 company scrapeds

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/actors/running/actors-in-store.md#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

### Owler Company Scraper

Enrich companies with business intelligence from **[Owler](https://www.owler.com)** — firmographics, competitors, funding, acquisitions, investments, leadership, and news events — from a list of website domains, plain company names, Owler URLs, or a whole sector. Export analysis-ready rows as JSON, CSV, or Excel.

<table><tr>
<td style="border-left:4px solid #F26C21;padding:12px 16px;font-weight:600">
Feed domains straight from a CRM export and get back 40+ fields per company — revenue, headcount, HQ, exchange/ticker, SIC codes, CEO, a ranked competitor list with per-competitor firmographics, funding rounds and investors, M&A history, and a news timeline — or point a sector preset at Owler's live competitor graph and map an entire market.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this Actor.

```
Actor: parsebird/owler-company-scraper (Apify). Enriches companies with data from Owler.com. Call it with ApifyClient.
Provide at least one source; all sources merge and de-duplicate:
  companyDomains[]  website domains ("apple.com") — most precise, resolved via Owler search on the company website
  companyNames[]    plain names ("Bright Data", "AT&T")
  companyUrls[]     Owler slugs or URLs ("apify" or "https://www.owler.com/company/apify")
  preset            one of: saas | fintech | ai-ml | ecommerce | gaming | crypto-web3  (starts from ~20 anchors)
  presetDepth       0-4 (default 2) — how deep to follow competitors-of-competitors
Enrichment toggles (all true by default): includeCompetitors, includeFunding, includeAcquisitions, includeInvestments,
  includeNewsEvents, includeFinancialHistory, includeLeadership, includeSocial
maxResults          default 100, max 100000 — hard cap / cost ceiling
maxConcurrency      default 10, max 50
Output: one row per company — url, name, legalName, description, summary, website, domain, logo, phoneNumber, industry,
  industries[], industrySectors[], ownership, sicCodes[], yearFounded, headquarters, address{}, exchange, ticker,
  employees, employeesFormatted, employeesRange, revenueAmount, revenueFormatted, revenueRange, followers, ceo{},
  leadership[], competitors[], totalCompetitors, funding{rounds[]{investors[]}}, fundingByYear[], acquisitions[],
  totalAcquisitions, investments[], firstInvestment{}, totalInvestments, keyHighlights[], revenueQuarterly[], momentum[],
  social{}, scrapedAt. Unresolved companies return {error, input, kind, scrapedAt}.
Pricing: pay-per-result. API docs: https://apify.com/parsebird/owler-company-scraper/api
```

### What does Owler Company Scraper do?

This Actor reads [Owler](https://www.owler.com)'s public company API — the same data behind every `owler.com/company/…` profile — and returns it as one structured row per company.

- 🏢 **Firmographics** — legal name, description, industry taxonomy, ownership, year founded, HQ and full address, phone, employee count with range, revenue with range, SIC codes, stock exchange and ticker (only when the company is actually listed).
- 🥊 **Competitor graph** — a ranked competitor list with each competitor's own revenue, headcount, HQ, ownership, and proximity score, plus the total competitor count Owler tracks.
- 💵 **Funding** — total raised, round-by-round history with dates and named investors (linked to their Owler profiles), and an annual funding chart.
- 🤝 **M\&A** — acquisitions the company has made (with amounts, dates, sources) and the company's own venture investments, including its first recorded investment.
- 📰 **News & momentum** — Owler's key-highlight event timeline, quarterly revenue for public companies, and revenue/employee trend signals.
- 👔 **People** — CEO with Owler rating and social links, plus the wider executive team.
- 🔀 **Sector presets** — start from ~20 curated anchors for SaaS, Fintech, AI/ML, E-commerce, Gaming, or Crypto/Web3 and traverse Owler's live competitor graph up to 4 hops deep.

#### How is this different from opening Owler profiles by hand?

Owler shows a slice of each section behind a sign-in wall and a paywall. This Actor returns the full competitor list with firmographics, the complete funding and acquisition history, every recorded investment, and the news timeline — for hundreds of companies per run, keyed by domain so it joins straight onto your CRM.

### Input parameters

You must supply at least one source of companies. Everything else has defaults.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| companyDomains | array | `[]` | Website domains (`apple.com`). Most precise input. |
| companyNames | array | `[]` | Plain company names. |
| companyUrls | array | `[]` | Owler slugs or `owler.com/company/…` URLs. |
| preset | enum | — | `saas`, `fintech`, `ai-ml`, `ecommerce`, `gaming`, `crypto-web3`. |
| presetDepth | integer | `2` | Competitor-graph hops for the preset (0–4). |
| includeCompetitors | boolean | `true` | Competitor list + total. |
| includeFunding | boolean | `true` | Funding rounds, investors, annual chart. |
| includeAcquisitions | boolean | `true` | Acquisitions the company made. |
| includeInvestments | boolean | `true` | The company's own investments. |
| includeNewsEvents | boolean | `true` | Key-highlight news timeline. |
| includeFinancialHistory | boolean | `true` | Quarterly revenue + momentum. |
| includeLeadership | boolean | `true` | Executive team. |
| includeSocial | boolean | `true` | Social profile URLs. |
| maxResults | integer | `100` | Hard cap on unique companies (max 100,000). |
| maxConcurrency | integer | `10` | Parallel Owler requests (max 50). |
| proxyConfiguration | object | none | Optional; Owler works without a proxy. |

#### Input examples

```json
{ "companyDomains": ["apple.com", "salesforce.com", "stripe.com", "shopify.com"], "includeCompetitors": true }
```

```json
{ "preset": "saas", "presetDepth": 2, "maxResults": 1000 }
```

```json
{ "companyNames": ["Sony", "Microsoft", "Google"], "includeAcquisitions": true, "includeInvestments": true, "includeCompetitors": false, "includeFunding": false, "includeNewsEvents": false, "includeFinancialHistory": false, "includeLeadership": false, "includeSocial": false }
```

### Output example

```json
{
  "url": "https://www.owler.com/company/sony",
  "name": "Sony",
  "legalName": "Sony Corporation",
  "description": "Sony is a Japan-based multinational conglomerate ...",
  "website": "https://www.sony.com",
  "domain": "sony.com",
  "industry": "Computers, Peripherals, Networking and Electronic Equipment",
  "industries": ["Technology Hardware & Equipment"],
  "ownership": "Public",
  "sicCodes": ["3669", "3577", "3576", "3575", "3600"],
  "yearFounded": 1946,
  "headquarters": "Minato-ku, Tōkyō Prefecture, JP",
  "address": { "street1": "1-7-1 Konan", "city": "Minato-ku", "state": "Tōkyō Prefecture", "country": "JP", "zipcode": "108-0075" },
  "exchange": "TSE",
  "ticker": "6758",
  "employees": 112000,
  "employeesRange": "100,000+",
  "revenueAmount": 86469744028,
  "revenueFormatted": "86.5B",
  "revenueRange": "$50B - 100B",
  "followers": 55997,
  "ceo": { "name": "Hiroki Totoki", "designation": "President & CEO", "rating": 73, "linkedin": "https://www.linkedin.com/in/hiroki-totoki-943b5513/" },
  "competitors": [
    { "position": 1, "name": "Samsung", "url": "https://www.owler.com/company/samsung", "domain": "samsung.com", "proximityScore": 100000, "ownership": "Public", "revenueAmount": 161407240007, "employeeCount": 267860 }
  ],
  "totalCompetitors": 29,
  "funding": { "totalAmount": 10000000, "totalFormatted": "10M", "totalRounds": 1, "rounds": [ { "date": "Oct 2023", "round": "Investment Fund", "amount": 10000000, "investors": [] } ] },
  "acquisitions": [ { "companyName": "STATSports Group Limited", "date": "Oct 2025", "undisclosed": true, "owlerUrl": "https://www.owler.com/company/statsports" } ],
  "totalAcquisitions": 20,
  "investments": [ { "companyName": "Qoly", "teamName": "qolycoltd", "date": "Feb 2026", "amount": 11468052 } ],
  "firstInvestment": { "companyName": "Intellectual Ventures", "date": "2014" },
  "totalInvestments": 18,
  "keyHighlights": [ { "type": "partnership", "headline": "Sony and VITEC Join Forces to Transform IPTV and Digital Signage", "date": "2026-06-12T00:00:00.000Z", "sourceName": "Zacks" } ],
  "revenueQuarterly": [ { "period": "Q1 2025", "revenueAmount": 19336030834 } ],
  "momentum": [ { "metric": "revenue", "changePercentage": -1.3, "direction": "down" } ],
  "social": { "twitter": "https://twitter.com/sony", "linkedin": "https://www.linkedin.com/company/sony", "facebook": "https://www.facebook.com/Sony" },
  "scrapedAt": "2026-08-29T10:00:00.000Z"
}
```

### What data can you extract from Owler?

| Field | Type | Description |
|-------|------|-------------|
| url | string | Owler profile URL. |
| name / legalName | string | Display name and full legal entity name. |
| description / summary | string | Short and longer business summary. |
| website / domain | string | Official website and bare domain (handy for joins). |
| logo / phoneNumber | string | Logo URL and public phone. |
| industry / industries / industrySectors | string / array / array | Joined industry, broad taxonomy, specific sectors. |
| ownership | string | Public or Private. |
| sicCodes | array | Standard Industrial Classification codes. |
| yearFounded | number | Founding year. |
| headquarters / address | string / object | `city, state, country` and a structured address. |
| exchange / ticker | string | Stock exchange and symbol — `null` unless the company is actually listed. |
| employees / employeesFormatted / employeesRange | number / string / string | Headcount, locale string, Owler bucket. |
| revenueAmount / revenueFormatted / revenueRange | number / string / string | Revenue (USD), short form, range. |
| followers | number | Owler community followers. |
| ceo | object | `name`, `designation`, `rating`, `photoUrl`, `linkedin`, `twitter`. |
| leadership | array | Executive team. |
| competitors / totalCompetitors | array / number | Per-competitor firmographics + full count Owler tracks. |
| funding | object | `totalAmount`, `totalRounds`, `rounds[]` with `investors[]`. |
| fundingByYear | array | `{ year, amount }` annual chart. |
| acquisitions / totalAcquisitions | array / number | M\&A the company made. |
| investments / firstInvestment / totalInvestments | array / object / number | The company's own investments. |
| keyHighlights | array | News/event timeline — `{ type, headline, date, sourceUrl, sourceName, owlerReportUrl, mentionCount }`. |
| revenueQuarterly | array | `{ period, revenueAmount }` — public companies only. |
| momentum | array | `{ metric, changePercentage, direction }` for revenue and employee. |
| social | object | LinkedIn, Twitter/X, Facebook, YouTube, Instagram. |
| scrapedAt | string | ISO extraction timestamp. |

### How to enrich companies from Owler

1. Open the Actor and click **Try for free**.
2. Paste website **domains** from your CRM export into **Company domains** (one per line). Or add plain **names**, Owler **URLs**, or pick a sector **preset**.
3. Turn off any enrichment sections you do not need for leaner rows.
4. Set **Max results** as your cost ceiling.
5. Click **Start**, then download the results as JSON, CSV, or Excel from the **Storage** tab, or pull them from the [API](https://apify.com/parsebird/owler-company-scraper/api).

### How much does it cost to scrape Owler?

This Actor uses the **pay-per-result** model — you are charged per company row pushed to the dataset.

| Plan | Price per company | Price per 1,000 |
|------|-------------------|-----------------|
| Free | $0.00379 | **$3.79** |
| Bronze | $0.00349 | **$3.49** |
| Silver | $0.00329 | **$3.29** |
| Gold | $0.00299 | **$2.99** |

Enriching 1,000 companies on the Free plan costs about **$3.79**. Error rows count as results. Your monthly Apify platform credits typically cover hundreds of companies at no extra cost.

### How it works

1. Each domain and name is resolved to the exact Owler company via Owler's own search (domains are matched on the company website).
2. `companyUrls` are parsed to Owler slugs; a slug that no longer exists is re-resolved via search.
3. A `preset` starts from ~20 curated sector anchors and walks Owler's live `getCompanyCG` competitor graph breadth-first up to `presetDepth` hops.
4. For every company, the Actor fetches the profile and the enrichment sections you enabled in parallel, normalises them into the output schema, and de-duplicates by profile URL.
5. Companies that cannot be resolved are emitted as schema-consistent error rows so a CSV pipeline never silently drops a line.

### Using the Actor via API

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("parsebird/owler-company-scraper").call(run_input={
    "companyDomains": ["stripe.com", "revolut.com", "plaid.com"],
    "includeFunding": True,
    "includeLeadership": True,
    "maxResults": 500,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], "—", item.get("revenueFormatted"), "—", item.get("totalCompetitors"))
```

#### JavaScript

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('parsebird/owler-company-scraper').call({
    preset: 'fintech',
    presetDepth: 2,
    maxResults: 1000,
});

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

The Actor runs on the [Apify platform](https://apify.com), so you also get [scheduling](https://docs.apify.com/platform/schedules), a full [REST API](https://docs.apify.com/api/v2), webhooks, and native integrations with Make, Zapier, Google Sheets, HubSpot, and Salesforce. Results export as JSON, CSV, Excel, XML, or RSS.

### Use cases

- **CRM enrichment** — feed website domains from a Salesforce or HubSpot export and append revenue, headcount, industry, and leadership.
- **Competitive intelligence** — pull a company's ranked competitor list with each competitor's firmographics.
- **Market mapping** — traverse a whole sector's competitor graph with a preset.
- **M\&A and VC research** — acquisition and investment history, funding rounds, and named investors.
- **Sales and ABM** — score and segment accounts by size, funding stage, and momentum signals.

### FAQ

**Do I need an Owler account or API key?**
No. The Actor reads Owler's public company API. You only need an Apify account.

**Which input is most accurate?**
`companyDomains`. Owler matches the domain against the company's official website, so it lands on the right profile even for ambiguous names.

**Why is `exchange` / `ticker` sometimes null?**
Owler occasionally leaves a stale exchange on a private company. When there is no ticker, the Actor returns `null` for both rather than implying a listing.

**Why is `revenueQuarterly` empty?**
Owler publishes quarterly revenue only for listed public companies. Private companies and investment firms return `[]`.

**How does the preset traversal work?**
It starts from ~20 curated anchor companies for the sector and follows Owler's live competitor graph breadth-first. `presetDepth: 0` returns just the anchors; `2` (default) usually yields a few hundred companies; `4` maps the whole sector.

**What happens to companies that can't be found?**
They are written as rows with an `error` string plus the original `input` and `kind`, so downstream joins stay aligned.

**Can I schedule recurring runs?**
Yes. Use Apify's [scheduler](https://docs.apify.com/platform/schedules) to refresh your account list daily or weekly, and route changes into your CRM. Found a problem? Open an issue on the **Issues** tab.

### Related Actors

- [LinkedIn Company Scraper](https://apify.com/parsebird) — company pages and headcount from LinkedIn.
- [Northdata Scraper](https://apify.com/parsebird/northdata-scraper) — official company registers and financials.
- [Indeed Jobs Scraper](https://apify.com/parsebird/indeed-jobs-scraper) — job listings and company data from Indeed.
- Browse the full [ParseBird publisher page](https://apify.com/parsebird) for more scrapers.

### Legal and compliance

This Actor collects only publicly available company information from Owler — data any visitor can view. It does not access private data or bypass authentication. You are responsible for using the scraped data in accordance with Owler's terms, applicable laws (including the GDPR and CCPA where relevant), and the purpose limitations that apply to personal data such as executive names and profiles. If you plan to scrape at scale or redistribute the data commercially, seek legal advice first. See Apify's guide on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

# Actor input Schema

## `companyDomains` (type: `array`):

Website domains such as apple.com or salesforce.com. Resolved to the exact company via Owler's own search (matched on the company website). The most precise input for CRM enrichment.

## `companyNames` (type: `array`):

Plain company names such as Apple Inc, Bright Data, or AT\&T. Resolved via Owler search. For an ambiguous one-word name, prefer a domain.

## `companyUrls` (type: `array`):

Exact Owler slugs or URLs, e.g. apify or https://www.owler.com/company/apify.

## `preset` (type: `string`):

Start from ~20 curated anchor companies for a sector and traverse Owler's live competitor graph at runtime.

## `presetDepth` (type: `integer`):

How deep the preset traversal follows competitors-of-competitors. Deeper = more companies, longer runtime.

## `includeCompetitors` (type: `boolean`):

Per-competitor firmographics and the total competitor count Owler tracks.

## `includeFunding` (type: `boolean`):

Funding total, rounds, investors, and the annual funding chart.

## `includeAcquisitions` (type: `boolean`):

M\&A history the company has made.

## `includeInvestments` (type: `boolean`):

The company's own venture investments and its first recorded investment.

## `includeNewsEvents` (type: `boolean`):

Owler's news/event key-highlight timeline.

## `includeFinancialHistory` (type: `boolean`):

Quarterly revenue (public companies) and revenue/employee momentum signals.

## `includeLeadership` (type: `boolean`):

Executive team beyond the CEO.

## `includeSocial` (type: `boolean`):

LinkedIn, Twitter/X, Facebook, YouTube, and Instagram URLs.

## `maxResults` (type: `integer`):

Hard cap on unique companies. Set it as your cost ceiling.

## `maxConcurrency` (type: `integer`):

Parallel Owler requests.

## `proxyConfiguration` (type: `object`):

Optional. Owler works fine without a proxy; add one only for very large runs.

## Actor input object example

```json
{
  "companyDomains": [
    "stripe.com",
    "shopify.com"
  ],
  "companyNames": [],
  "companyUrls": [],
  "preset": "",
  "presetDepth": 2,
  "includeCompetitors": true,
  "includeFunding": true,
  "includeAcquisitions": true,
  "includeInvestments": true,
  "includeNewsEvents": true,
  "includeFinancialHistory": true,
  "includeLeadership": true,
  "includeSocial": true,
  "maxResults": 25,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "companyDomains": [
        "stripe.com",
        "shopify.com"
    ],
    "companyNames": [],
    "companyUrls": [],
    "maxResults": 25,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/owler-company-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 = {
    "companyDomains": [
        "stripe.com",
        "shopify.com",
    ],
    "companyNames": [],
    "companyUrls": [],
    "maxResults": 25,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/owler-company-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "companyDomains": [
    "stripe.com",
    "shopify.com"
  ],
  "companyNames": [],
  "companyUrls": [],
  "maxResults": 25,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call parsebird/owler-company-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/owler-company-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/i0f9UWviImHL8FxQT/builds/74g9FVj64gZDz9FeI/openapi.json
