Owler Company Intelligence API
Pricing
from $5.14 / 1,000 company record returneds
Owler Company Intelligence API
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.
Owler Company Intelligence API: Competitor Intelligence and Private Company Data
Competitor intelligence and private company data as clean, structured JSON. Send Owler 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"] |
{"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
{"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
- View on Apify Store and click Try for free.
- Paste one or more company URLs into Company URLs.
- 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 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 (free trial), Claude Cowork (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 (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".
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. 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 and it can discover, pay for, and run this Actor autonomously. Read the Apify x402 announcement 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 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.
- Create a task. A saved task is this Actor plus a saved input, so give each list its own name, for example "Top 40 competitors", with the Owler profile URLs for those accounts in
companyUrls. Click Create empty task on the Actor page, paste the URLs, and save. - Attach a schedule. Open 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. - Read the history back. Each run appends rows carrying a
fetched_attimestamp, 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 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, which exposes "Run Actor" and "Get Dataset Items" steps for any Actor on the platform. A four-step enrichment workflow looks like this:
- Schedule Trigger, weekly.
- Apify node, run
johnvc/owler-company-apiwith the account URLs from your CRM. - Filter node, keep rows where
employeeCountcrossed a threshold ortotalFundingchanged since the last run. - Slack or email node, send yourself the accounts that moved.
The published task Enrich Company Records in an n8n Workflow walks through the same shape.
Make and Zapier
Both have native Apify integrations, Apify on Make and Apify on 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 (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_inteltable.
from apify_client import ApifyClientfrom supabase import create_clientapify = 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, so Claude Code (free trial), Claude Cowork (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 covers the one-click setup.
Webhooks: connect anything else
For custom setups, attach an Apify webhook 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 for funding rounds and investor detail on the same accounts.
- PitchBook Company API for private-market financials and deal history.
- Startup Investors Data Scraper for who invests in whom, once you know which companies matter.
- LinkedIn Company API for headcount and company page detail as a second read on size.
Older alternatives such as Owler Scraper 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
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
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
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
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
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
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
โ 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 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 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. Create a saved task 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, including Make, Zapier, Slack, Google Drive, and GitHub, plus 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, and the example repo 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, using the Actor-specific URL https://mcp.apify.com/?tools=actors,docs,johnvc/owler-company-api. That covers Claude Code (free trial), Claude Cowork (free trial), Cursor, and anything else that speaks MCP. See the Apify MCP docs for setup.
How else can I research companies, investors, and private company data?
Pair this with Crunchbase Company API when you need the funding rounds and the investors behind them, PitchBook Company API for private-market financials, and LinkedIn Company API for a second read on headcount. If the question is who funds a segment rather than who competes in it, Startup Investors Data Scraper is the better starting point.
Is this an official Owler API?
No. This Actor is not affiliated with, endorsed by, or connected to Owler. 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 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, 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.
Last Updated: 2026.08.08