# Owler Company Intelligence API (`johnvc/owler-company-api`) Actor

Competitor intelligence and private company data as clean, structured JSON. Send company URLs and get revenue estimates, employee counts, funding totals, competitor sets, industry, location, and CEO details. Pay per company, MCP-ready for Claude and AI agents.

- **URL**: https://apify.com/johnvc/owler-company-api.md
- **Developed by:** [John](https://apify.com/johnvc) (community)
- **Categories:** AI
- **Stats:** 6 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.14 / 1,000 company record returneds

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

## Owler Company Intelligence API: Competitor Intelligence and Private Company Data

Competitor intelligence and private company data as clean, structured JSON. Send [Owler](https://www.owler.com/) company profile URLs and get back revenue estimates, employee counts, funding totals, the named competitor set, industry, headquarters location, and CEO details. One row per company.

Most company data tools tell you what a company is. This one also tells you who it competes with: every record carries a competitor count and the named competitor set, which is the part that competitor-intelligence and market-mapping work actually runs on.

### What this actor returns

- **Revenue and size:** revenue estimate as a number and as a banded range, employee count and employee range
- **Competitors:** competitor count plus the named competitor set, each with a profile link you can feed back in
- **Funding:** total disclosed funding raised, number of acquisitions made
- **Firmographics:** industry classifications, year founded, ownership status, SIC codes
- **Location and identity:** city, state or region, country, postal code, street address, website, primary domain, phone, CEO name

Every company row also carries a one-line plain-language `summary`, so an AI agent can read a record without post-processing.

### Use cases

- **Map a competitive set.** Pull a company plus its competitor list, then run those competitor URLs back through the Actor to map a whole market in two passes.
- **Enrich an account list with firmographics.** Attach industry, employee band, revenue band, and headquarters location to accounts you already hold.
- **Research private companies.** Revenue and funding estimates for companies that file nothing publicly.
- **Size territories and segment accounts.** Employee count and revenue range are the two fields most sales-ops teams filter on first.
- **Qualify inbound leads.** Screen accounts by size, funding, and industry before routing them.

### Input parameters

| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| `companyUrls` | array of strings | **Required** | (none) | Company profile URLs to collect. A bare company slug is also accepted as shorthand. Up to 1000 per run. | `["https://www.owler.com/company/stripe", "figma"]` |

```json
{
  "companyUrls": [
    "https://www.owler.com/company/stripe",
    "https://www.owler.com/company/figma"
  ]
}
```

Need larger batches than 1000 per run? Contact us and we can raise the limit for your account.

### Example output

```json
{
  "result_type": "company",
  "companyName": "SimplexCC Ltd.",
  "website": "https://www.simplex.com/",
  "domain": "simplex.com",
  "industry": "Software, Internet & Computer Services",
  "city": "Givatayim",
  "state": "Tel Aviv District",
  "country": "IL",
  "founded": 2014,
  "ownership": "Private",
  "revenue": 10100000,
  "estimatedAnnualRevenue": "$5M - 25M",
  "employeeCount": 175,
  "estimatedEmployees": "100 - 250",
  "totalFunding": 8400000,
  "totalCompetitors": 13,
  "competitors": [
    { "name": "Nova", "profileUrl": "https://www.owler.com/company/fundmylawsuitnow" },
    { "name": "EPL", "profileUrl": "https://www.owler.com/company/energyprofiles" }
  ],
  "summary": "SimplexCC Ltd. in Software, Internet & Computer Services - Givatayim, IL. Reported estimated revenue $5M - 25M, 175 employees."
}
```

A URL that cannot be collected returns a row with `result_type: "error"` and a plain-language `error_message`, so a failed input never disappears silently.

#### Output fields

One dataset item per input URL. Company rows carry the fields below; error rows carry `result_type`, `error_message`, `error_type`, and `fetched_at`.

| Field | Type | Description |
|---|---|---|
| `result_type` | string | `company` for a collected record, `error` for an input that could not be collected. |
| `companyId` | string | Stable identifier for the company on the source directory. |
| `companyName` | string | Registered or commonly used company name. |
| `profileUrl` | string | The company profile page this record was collected from. |
| `website` | string | The company's own website. |
| `domain` | string | Primary web domain, useful as a join key against other datasets. |
| `description` | string | Short prose description of what the company does. |
| `industry` | string | The first listed industry classification. |
| `industries` | array | All industry classifications on the profile. |
| `founded` | integer | Year the company was founded. |
| `ownership` | string | Ownership status, for example Private or Public. |
| `status` | string | Operating status reported on the profile. |
| `city`, `state`, `country` | string | Headquarters city, state or region, and country code. |
| `zipcode` | string | Headquarters postal code. |
| `streetAddress` | string | Headquarters street address. |
| `phoneNumber` | string | Main listed phone number. |
| `revenue` | integer | Estimated annual revenue as a number, in US dollars. |
| `estimatedAnnualRevenue` | string | Estimated annual revenue expressed as a banded range. |
| `employeeCount` | integer | Estimated number of employees. |
| `estimatedEmployees` | string | Estimated employee count expressed as a banded range. |
| `totalFunding` | integer | Total disclosed funding raised, in US dollars. |
| `totalAcquisitions` | integer | Number of acquisitions the company has made. |
| `totalCompetitors` | integer | Number of competitors tracked for this company. |
| `competitors` | array | Named competitor set, each entry with a `name` and a `profileUrl`. |
| `ceoName` | string | Current chief executive, when the profile lists one. |
| `followers` | integer | Number of people following the company on the source directory. |
| `exchange`, `ticker` | string | Stock exchange and ticker symbol, for publicly traded companies. |
| `sicCode` | array | Standard Industrial Classification codes listed for the company. |
| `summary` | string | One-line plain-language summary of the record. |
| `error_message`, `error_type` | string | Why an input produced no company record, and its machine-readable category. |
| `fetched_at` | string | UTC timestamp when the row was collected. |

Not every profile lists every field. Where a profile has no value for something, the field comes back empty rather than filled with a guess. The dataset also ships with two saved views, **Company overview** and **Competitor sets**, so you can read either the firmographics table or the competitor mapping without writing a transformation.

### Pricing

Pay per result. One event, `company-scraped`, is charged once for every company record pushed to the dataset. Nothing is charged for an input that returns no record, and nothing is charged for a run that returns nothing at all.

A 100-company run therefore costs 100 charged events. Higher Apify subscription tiers pay a lower per-record rate. Current rates are always shown on the Store card.

### How to get started

1. [View on Apify Store](https://apify.com/johnvc/owler-company-api?fpr=9n7kx3) and click Try for free.
2. Paste one or more company URLs into **Company URLs**.
3. Run it. Results appear on the Output tab and export as JSON, CSV, or Excel.

Prefer to work from code? The [example repo with a Python and MCP walkthrough](https://github.com/johnisanerd/Apify-Owler-Company-API) has a runnable client, a competitor-map recipe that follows the returned competitor URLs for a second pass, and install steps for five MCP clients.

### 🔌 Use this API from Claude (MCP)

Add this Actor as a tool in [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial), [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial), Cursor, or any other MCP client through the hosted Apify MCP server:

```
https://mcp.apify.com/?tools=actors,docs,johnvc/owler-company-api
```

With [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial):

```
claude mcp add --transport http owler "https://mcp.apify.com/?tools=actors,docs,johnvc/owler-company-api"
```

Then ask your agent something like "get the competitor set and revenue estimate for Stripe".

https://www.youtube.com/watch?v=jREWahDGhJM

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

### 💸 Pay per run with crypto (x402)

The Owler Company Intelligence API supports agentic payments via the [x402 protocol](https://docs.apify.com/platform/integrations/x402).
AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed:
point your agent at the [Apify MCP server](https://mcp.apify.com/?tools=actors,docs,johnvc/owler-company-api) and it can
discover, pay for, and run this Actor autonomously. Read the
[Apify x402 announcement](https://apify.com/change-log/pay-for-apify-actors-with-x402?fpr=9n7kx3) for details.

### Speed and reliability

This source is thorough rather than fast: allow roughly a minute or two per chunk of company URLs. The Actor collects in chunks and charges only for records actually returned, so a slow run never costs more than a fast one.

Input URLs are validated before anything is sent upstream. A malformed URL is rejected locally with a warning rather than forwarded, because a bad URL sent to the source can stall an entire collection.

### 🔌 Integrations: Automate Competitor Intelligence Monitoring

A single run tells you how big a company is and who it competes with. Run the same list on a schedule and you get something better, because headcount, revenue bands, funding totals, and competitor sets all drift over time, and the dataset keeps every version. Native [Apify platform integrations](https://docs.apify.com/platform/integrations) wire the Actor into the tools you already use, so you do not have to run a server or a cron job of your own.

#### Tasks and schedules: watch an account list on a cadence

The pattern is one saved task per list you care about, one schedule across all of them.

1. **Create a task.** A [saved task](https://docs.apify.com/platform/actors/running/tasks) is this Actor plus a saved input, so give each list its own name, for example *"Top 40 competitors"*, with the [Owler](https://www.owler.com/) profile URLs for those accounts in `companyUrls`. Click **Create empty task** on the Actor page, paste the URLs, and save.
2. **Attach a schedule.** Open [Schedules](https://docs.apify.com/platform/schedules) in Apify Console, create a schedule with a standard cron expression, and add your tasks to it. Useful ones: `0 7 1 * *` (the 1st of each month at 7 AM), `0 9 * * 1` (Mondays at 9 AM), `0 */6 * * *` (every six hours). One schedule can trigger many tasks, so a single "monthly company refresh" can cover every list you have saved.
3. **Read the history back.** Each run appends rows carrying a `fetched_at` timestamp, so the task's dataset becomes a headcount and revenue history you can export as JSON, CSV, or Excel at any time.

Company size and funding move slowly, so monthly is usually the right cadence. The published task [Track Competitor Revenue and Headcount Monthly](https://apify.com/johnvc/owler-company-api/examples/track-competitor-revenue-and-headcount-monthly?fpr=9n7kx3) is this pattern already configured.

#### n8n: enrich a CRM list inside a workflow

There is no dedicated community node for this Actor yet, so use the official [Apify n8n integration](https://docs.apify.com/platform/integrations/n8n), which exposes "Run Actor" and "Get Dataset Items" steps for any Actor on the platform. A four-step enrichment workflow looks like this:

1. **Schedule Trigger**, weekly.
2. **Apify node**, run `johnvc/owler-company-api` with the account URLs from your CRM.
3. **Filter node**, keep rows where `employeeCount` crossed a threshold or `totalFunding` changed since the last run.
4. **Slack or email node**, send yourself the accounts that moved.

The published task [Enrich Company Records in an n8n Workflow](https://apify.com/johnvc/owler-company-api/examples/enrich-company-records-in-an-n8n-workflow?fpr=9n7kx3) walks through the same shape.

#### Make and Zapier

Both have native Apify integrations, [Apify on Make](https://docs.apify.com/platform/integrations/make) and [Apify on Zapier](https://docs.apify.com/platform/integrations/zapier), with "Run Actor" and "Get Dataset Items" actions. The pattern is the same: trigger on a schedule, run this Actor, filter on a field, then notify or store the rows.

#### Supabase: keep a company history in your own database

Tracking size over time means storing it somewhere queryable. [Supabase](https://supabase.com/) (hosted Postgres) fits well, and there are two easy paths:

- **No code**: in n8n, connect the Apify node to the built-in Supabase node and insert a row per company after each scheduled run.
- **A few lines of Python**: run the Actor and bulk-insert the company rows into a `company_intel` table.

```python
from apify_client import ApifyClient
from supabase import create_client

apify = ApifyClient("YOUR_APIFY_TOKEN")
supabase = create_client("https://YOUR_PROJECT.supabase.co", "YOUR_SERVICE_ROLE_KEY")

run = apify.actor("johnvc/owler-company-api").call(
    run_input={
        "companyUrls": [
            "https://www.owler.com/company/stripe",
            "https://www.owler.com/company/figma",
        ]
    }
)

rows = [
    {
        "company_name": item["companyName"],
        "domain": item.get("domain"),
        "industry": item.get("industry"),
        "revenue": item.get("revenue"),
        "revenue_band": item.get("estimatedAnnualRevenue"),
        "employees": item.get("employeeCount"),
        "total_funding": item.get("totalFunding"),
        "total_competitors": item.get("totalCompetitors"),
        "fetched_at": item.get("fetched_at"),
    }
    for item in apify.dataset(run.default_dataset_id).iterate_items()
    if item.get("result_type") == "company"
]

if rows:
    supabase.table("company_intel").insert(rows).execute()
```

Run that on a schedule and `company_intel` becomes a time series of headcount, revenue band, and funding per account, ready for a dashboard or a "this account just doubled" alert.

#### MCP and AI agents

Apify exposes this Actor through the [Apify MCP server](https://mcp.apify.com/), so [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial), [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial), Cursor, and other MCP clients can call it as a tool and answer questions like "who does Figma compete with, and how big are they" against live data instead of training data. The published task [Get Company Competitor Data in Claude via MCP](https://apify.com/johnvc/owler-company-api/examples/get-company-competitor-data-in-claude-via-mcp?fpr=9n7kx3) covers the one-click setup.

#### Webhooks: connect anything else

For custom setups, attach an [Apify webhook](https://docs.apify.com/platform/integrations/webhooks) to the `ACTOR.RUN.SUCCEEDED` event. When a scheduled run finishes, Apify POSTs the run details, including the dataset ID, to your endpoint, so your own service, an n8n or Make webhook trigger, or a serverless function can fetch the rows and do whatever comes next.

### 🔗 Related Tools

Company research rarely runs off a single source. These are the ones that pair with it:

- [Crunchbase Company API](https://apify.com/johnvc/crunchbase-company-api?fpr=9n7kx3) for funding rounds and investor detail on the same accounts.
- [PitchBook Company API](https://apify.com/johnvc/pitchbook-company-api?fpr=9n7kx3) for private-market financials and deal history.
- [Startup Investors Data Scraper](https://apify.com/johnvc/startup-investors-data-scraper?fpr=9n7kx3) for who invests in whom, once you know which companies matter.
- [LinkedIn Company API](https://apify.com/johnvc/linkedin-company-api?fpr=9n7kx3) for headcount and company page detail as a second read on size.

Older alternatives such as [Owler Scraper](https://apify.com/crawlerbros/owler-scraper?fpr=9n7kx3) also sit on the Store, but at the time of writing that one carries no user ratings and a 70% run success rate on its Store card. This API documents every field it returns and charges only for records actually delivered. An input it cannot collect comes back as a typed error row instead of vanishing from the results.

### 💡 Applications

Ready-to-run examples of this API in action. Open any one and run it in a single click.

#### Owler Company Data API: Revenue, Size, Competitors

The full record for a list of companies: revenue estimate, employee count, funding total, and the named competitor set.
[Run this task](https://apify.com/johnvc/owler-company-api/examples/owler-company-data-api-revenue-size-competitors?fpr=9n7kx3)

#### Find Company Competitors with Revenue and Headcount

Start from one company and get its rivals back with a size figure attached to each name.
[Run this task](https://apify.com/johnvc/owler-company-api/examples/find-company-competitors-with-revenue-and-headcount?fpr=9n7kx3)

#### Look Up Company Revenue and Employee Counts

A straight firmographics lookup: revenue estimate and band, employee count and band, for a batch of companies.
[Run this task](https://apify.com/johnvc/owler-company-api/examples/look-up-company-revenue-and-employee-counts?fpr=9n7kx3)

#### Track Competitor Revenue and Headcount Monthly

Save the input once, attach a monthly schedule, and let the dataset build a size history for your competitive set.
[Run this task](https://apify.com/johnvc/owler-company-api/examples/track-competitor-revenue-and-headcount-monthly?fpr=9n7kx3)

#### Get Company Competitor Data in Claude via MCP

Add the Actor to an MCP client and ask for a competitor set and revenue estimate in plain language.
[Run this task](https://apify.com/johnvc/owler-company-api/examples/get-company-competitor-data-in-claude-via-mcp?fpr=9n7kx3)

#### Enrich Company Records in an n8n Workflow

Drop the Actor into an n8n pipeline to attach firmographics to a CRM list on a schedule.
[Run this task](https://apify.com/johnvc/owler-company-api/examples/enrich-company-records-in-an-n8n-workflow?fpr=9n7kx3)

#### Map a Talent Market from Competitor Companies

Follow the competitor URLs from one seed account to build the list of companies hiring out of the same talent pool.
[Run this task](https://apify.com/johnvc/owler-company-api/examples/map-a-talent-market-from-competitor-companies?fpr=9n7kx3)

### ❓ FAQ

#### What is competitor intelligence?

It is the practice of tracking who a company competes with, how large those competitors are, and how that set shifts over time. This Actor supplies the raw layer: a named competitor set per company, with profile links you can follow to collect those competitors in turn.

#### What are firmographics?

Firmographics are to companies what demographics are to people: industry, employee count, revenue band, location, ownership, and age. Every field in that list is returned here.

#### What is firmographic data used for?

Segmenting accounts, sizing territories, scoring inbound leads, and building target account lists. Employee band and revenue band are the two fields most teams filter on first.

#### How do I find financial data on private companies?

Private companies file little or nothing publicly, so the practical route is estimation from headcount, funding, and sector benchmarks. This Actor returns both a numeric revenue estimate and a banded range, plus total funding raised.

#### How current is the data?

Records are collected live at run time, not served from a cached copy, so you get the profile as it stands when you run it.

#### Can I get the competitors of a competitor?

Yes. Each record returns competitor profile URLs. Feed those back in as `companyUrls` for a second pass to map a full competitive set.

#### Does it return email addresses?

No. Company records carry a website, domain, and phone number, but no email addresses.

#### Why did a company come back with no record?

The profile may have been removed or renamed on the source site. That input returns an `error` row explaining why, rather than silently disappearing, and it is not charged.

#### Should I use an official API or a web Scraper for company data?

An [API](https://en.wikipedia.org/wiki/API) is a documented interface a provider offers on their own terms: rate limited, quota bound, usually sold per seat, and sometimes missing the field you actually need. [Web scraping](https://en.wikipedia.org/wiki/Web_scraping) reads the public page instead. This Actor is the second thing wearing the interface of the first. You send a list of URLs, you get structured JSON back, there is no quota to negotiate and no annual contract. If you already pay for a feed that carries a named competitor set, keep it. If you do not, this is the cheaper way to get one.

#### Can I schedule this company data Scraper?

Yes, any run can be automated on a [schedule](https://docs.apify.com/platform/schedules). Create a [saved task](https://docs.apify.com/platform/actors/running/tasks) holding the company URLs you want watched, then attach a schedule from the Actor's **Actions** then **Schedule** menu. Cron examples: `0 7 1 * *` for the 1st of each month at 7 AM, `0 9 * * 1` for Mondays at 9 AM, `0 */6 * * *` for every six hours. One schedule can trigger many tasks at once, so a single monthly refresh can cover every account list you keep. The Integrations section above has the full recipe, including how the accumulated dataset turns into a headcount and revenue history.

#### Can I integrate this company data Scraper with other apps?

Yes. The Actor connects to almost any cloud service through [Apify integrations](https://docs.apify.com/platform/integrations), including [Make](https://docs.apify.com/platform/integrations/make), [Zapier](https://docs.apify.com/platform/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), Google Drive, and GitHub, plus [webhooks](https://docs.apify.com/platform/integrations/webhooks) that fire on `ACTOR.RUN.SUCCEEDED` for anything custom. The Integrations section above has worked examples for n8n and Supabase.

#### Can I use the Owler Company Intelligence API with the Apify API?

Yes. The Apify API runs the Actor, schedules it, and fetches datasets programmatically, and the `apify-client` package wraps it for both Python and Node.js. Ready-made calls for this Actor are on its [API tab](https://apify.com/johnvc/owler-company-api/api?fpr=9n7kx3), and the [example repo](https://github.com/johnisanerd/Apify-Owler-Company-API) ships a working Python client you can copy.

#### Can I use this Actor through an MCP server?

Yes. Add it as a tool in any MCP client through the hosted [Apify MCP server](https://mcp.apify.com/), using the Actor-specific URL `https://mcp.apify.com/?tools=actors,docs,johnvc/owler-company-api`. That covers [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial), [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial), Cursor, and anything else that speaks MCP. See the [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp) for setup.

#### How else can I research companies, investors, and private company data?

Pair this with [Crunchbase Company API](https://apify.com/johnvc/crunchbase-company-api?fpr=9n7kx3) when you need the funding rounds and the investors behind them, [PitchBook Company API](https://apify.com/johnvc/pitchbook-company-api?fpr=9n7kx3) for private-market financials, and [LinkedIn Company API](https://apify.com/johnvc/linkedin-company-api?fpr=9n7kx3) for a second read on headcount. If the question is who funds a segment rather than who competes in it, [Startup Investors Data Scraper](https://apify.com/johnvc/startup-investors-data-scraper?fpr=9n7kx3) is the better starting point.

#### Is this an official Owler API?

No. This Actor is not affiliated with, endorsed by, or connected to [Owler](https://www.owler.com/). It is an independent tool that collects the public company profile data those pages show and returns it as structured JSON, and it makes no claim of parity with any product Owler sells.

#### Is it legal to collect public company data?

Collecting publicly available information is generally lawful in most places, though what you do with it afterwards is governed by local law and by whatever terms you signed. Apify's write-up on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) is a reasonable starting point. This Actor reads public profile pages only. It returns company-level fields plus the chief executive's name, and it does not return email addresses or personal contact details.

### 🌐 About Alpha OSINT

This Actor is part of [Alpha OSINT](https://www.alphaosint.com), toolset of financial and operations data sources and APIs.
For support or requests for this actor, please start a ticket [directly on our support page](https://apify.com/johnvc/owler-company-api/issues/open?fpr=9n7kx3).

Last Updated: 2026.08.08

# Actor input Schema

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

Company profile URLs to collect, for example https://www.owler.com/company/stripe. A bare company slug such as 'stripe' also works. Up to 1000 per run. One company-scraped event is charged per company record returned; inputs that return no record are not charged. Need larger batches? Contact us and we can raise this limit for your account.

## Actor input object example

```json
{
  "companyUrls": [
    "https://www.owler.com/company/stripe",
    "https://www.owler.com/company/figma"
  ]
}
```

# Actor output Schema

## `allResults` (type: `string`):

Every dataset item from this run: collected company records and any error rows.

## `overview` (type: `string`):

Tabular overview of every company. Columns: company, website, industry, city, country, revenue, employees, competitors, funding, founded.

## `competitors` (type: `string`):

Each company with its competitor count and named competitor set, for competitive landscape mapping.

# 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 = {
    "companyUrls": [
        "https://www.owler.com/company/stripe",
        "https://www.owler.com/company/figma"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnvc/owler-company-api").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 = { "companyUrls": [
        "https://www.owler.com/company/stripe",
        "https://www.owler.com/company/figma",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("johnvc/owler-company-api").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 '{
  "companyUrls": [
    "https://www.owler.com/company/stripe",
    "https://www.owler.com/company/figma"
  ]
}' |
apify call johnvc/owler-company-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=johnvc/owler-company-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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