Company Financials, Valuation & M&A Scraper (Craft.co) avatar

Company Financials, Valuation & M&A Scraper (Craft.co)

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Company Financials, Valuation & M&A Scraper (Craft.co)

Company Financials, Valuation & M&A Scraper (Craft.co)

Scrape company financials from Craft.co: revenue, valuation, market cap, M&A, executives & competitors as JSON. Low-cost Crunchbase / PitchBook alternative for VC/PE deal sourcing & M&A research.

Pricing

from $4.00 / 1,000 results

Rating

5.0

(2)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

2

Bookmarked

14

Total users

3

Monthly active users

18 days ago

Last modified

Share

Craft.co Company Scraper — Financials, Valuation, M&A

Craft.co Company Scraper — Revenue, Valuation, M&A, Executives & Competitors

Deep company financials — for private and public companies — without a $$$$ data subscription. This Actor turns Craft.co profile pages into clean, structured JSON: multi-year revenue & income statements, private-company valuations, public market cap & share price, total funding, full M&A / subsidiary lists, executive teams and competitor maps — pulled straight from Craft.co's embedded structured-data layer.

Give it a plain list of company names, slugs or URLs — or pick a sector preset and let it discover competitors recursively, expanding a handful of seeds into a whole market at run time. No API key, no login. Output is ready for CRM, dashboards, LLM/RAG context and Make/Zapier/n8n, with full Apify support (API, scheduling, proxy rotation, monitoring).

  • 💰 Real financials, not just firmographics — multi-year revenue & income statements, private valuation, public market cap & share price, total funding
  • 🤝 Deals & people — M&A / subsidiary lists, executive team and competitor maps in every profile
  • 🕸️ Recursive competitor discovery — expand a handful of seeds into an on-topic sector sweep at run time (live, not a static snapshot)
  • One run → clean flat data (JSON / CSV / Excel / API) with money as raw number + $14.00B + $14,000,000,000

Quick start (API)

Scrape three companies by name in one call — each name resolves to its Craft.co page automatically:

curl -X POST "https://api.apify.com/v2/acts/foxlabs~craft-intelligence/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "companyNames": ["Stripe", "Airbnb", "Notion"] }'

Prefer no code? Open the Input tab, type a few company names (or pick a sector preset), and click Start — then download the results.

What you get

One flat record per company. Money fields come three ways: a raw number for sorting/charts, a compact string ($14.00B) for scanning, and an exact string ($14,000,000,000).

FieldTypeDescription
url / slugstringCraft.co profile URL + slug (e.g. stripe)
namestringCompany display name
descriptionstringCompany description (long, falls back to short)
website / crunchbasestringOfficial homepage + Crunchbase link (when present)
foundedYearintegerFounding year
ownershipstringCompany type — e.g. public / private
stockTickerstringExchange ticker when public; null for private
headquartersstringHQ as one string
headquartersCity / headquartersState / headquartersCountrystringStructured HQ parts
employeesintegerLatest headcount
employeeHistory[]arrayHeadcount over time — { date, count }
revenue / revenueFormatted / revenueExact / revenueCurrencynumber / stringLatest revenue: raw + $14.00B + $14,000,000,000 + ISO currency
netIncomenumberLatest-period net income (often null)
incomeStatements[]arrayMulti-period financials — { period, revenue, netIncome, revenueGrowth, grossProfitMargin, currency }
valuation / valuationFormatted / valuationExact / valuationDatenumber / stringPrivate post-money valuation (mostly null for public companies)
marketCap / marketCapFormatted / marketCapExactnumber / stringPublic market cap (mostly null for private companies)
sharePrice / sharePriceDatenumber / stringLatest closing share price + its date (public companies)
totalFunding / totalFundingFormatted / totalFundingExactnumber / stringTotal funding raised
industries[] / industriesTextarray / stringIndustry tags as array + comma-joined string
socialobjectPresent links only: twitter, facebook, linkedin, instagram, youtube
executives[]arrayExecutive team — { name, title } (toggle)
competitors[]array{ name, url, revenue } — competitor revenue is often null on Craft.co (toggle)
acquisitions[]arraySubsidiaries / M&A — { company, date, amount, url }; date & amount are usually null (toggle)
offices[]arrayAll office locations — { city, state, country, countryCode, isHq }
scrapedAtstringISO 8601 scrape timestamp

With Owler enrichment on (optional, off by default), rows that were missing revenue/employees on Craft.co may also carry: revenueSource, revenueIsEstimate, revenueRange, employeesSource, employeesIsEstimate, employeesRange, owlerUrl, and enrichmentMatch (domain-verified provenance). A page that can't be read is written as a small { url, error, scrapedAt } row for transparency.

Sample output

Illustrative record (Stripe, trimmed for readability):

{
"url": "https://craft.co/stripe",
"slug": "stripe",
"name": "Stripe",
"description": "Stripe is a technology company that builds economic infrastructure for the internet...",
"website": "https://stripe.com",
"crunchbase": "https://www.crunchbase.com/organization/stripe",
"foundedYear": 2010,
"ownership": "private",
"stockTicker": null,
"headquarters": "South San Francisco, CA, United States",
"headquartersCity": "South San Francisco",
"headquartersState": "CA",
"headquartersCountry": "United States",
"employees": 11158,
"employeeHistory": [{ "date": "2025-03-01", "count": 11158 }],
"revenue": 14000000000,
"revenueFormatted": "$14.00B",
"revenueExact": "$14,000,000,000",
"revenueCurrency": "USD",
"netIncome": null,
"incomeStatements": [
{ "period": "2022-12-31", "revenue": 14000000000, "netIncome": null, "revenueGrowth": null, "grossProfitMargin": null, "currency": "USD" }
],
"valuation": 95000000000,
"valuationFormatted": "$95.00B",
"valuationExact": "$95,000,000,000",
"valuationDate": "2021-03-15",
"marketCap": null,
"marketCapFormatted": null,
"marketCapExact": null,
"sharePrice": null,
"sharePriceDate": null,
"totalFunding": 9897843617,
"totalFundingFormatted": "$9.90B",
"totalFundingExact": "$9,897,843,617",
"industries": ["Technology", "Automation", "Fintech", "Platform"],
"industriesText": "Technology, Automation, Fintech, Platform",
"social": { "twitter": "http://twitter.com/stripe", "linkedin": "https://www.linkedin.com/company/stripe" },
"executives": [
{ "name": "Patrick Collison", "title": "Co-Founder, CEO & Board Member" },
{ "name": "John Collison", "title": "Co-Founder, President & Board Member" }
],
"competitors": [
{ "name": "Adyen", "url": "https://craft.co/adyen", "revenue": null },
{ "name": "Checkout.com", "url": "https://craft.co/checkout-com", "revenue": null }
],
"acquisitions": [
{ "company": "Paystack", "date": null, "amount": null, "url": "https://craft.co/paystack" }
],
"offices": [
{ "city": "South San Francisco", "state": "CA", "country": "United States", "countryCode": "US", "isHq": true }
],
"scrapedAt": "2026-05-21T11:17:20.298Z"
}

You can download the dataset in JSON, CSV, Excel, HTML or XML.

Input & filters

  • Sector presetsaas (broad B2B tech & software), fintech, or ai-ml. Auto-fills curated anchor companies and, with discovery on, an industry whitelist to keep the sweep on-topic.
  • Company names / slugs — just type names, one per line (e.g. Stripe, Notion); each resolves to its Craft.co page.
  • Company URLs — exact https://craft.co/... URLs for tricky slugs, or a bulk .txt / .csv upload.
  • What to extract — toggle competitors, M&A / acquisitions, and executives (all on by default).
  • Competitor discovery depth (04) — how far to follow Craft.co's competitor graph. 0 = only the companies you list; higher = wider live market sweep (default 2 for presets).
  • Industry whitelist / blocklist (discovery only) — keep the graph on-topic; drop unwanted sectors (e.g. hardware, telecom). Presets fill the whitelist automatically.
  • Backfill from Owler (optional) — fill missing revenue/employees from Owler, but only when Owler's domain matches the company's own website (backfilled values are tagged as estimates).
  • Maximum companies — your hard cost cap (default 100, up to 100,000).

Example inputs (copy & paste)

// 1) Specific companies — just type names (no URLs)
{ "companyNames": ["Stripe", "Airbnb", "Notion"] }
// 2) A whole sector — top 100 B2B software companies
{ "preset": "saas", "maxResults": 100 }
// 3) Market discovery — follow the competitor graph two hops out
{ "preset": "fintech", "maxDepth": 2, "maxResults": 1000 }
// 4) AI / ML sector, backfilling missing revenue & headcount from Owler
{ "preset": "ai-ml", "enrichFromOwler": true, "maxResults": 200 }
// 5) Exact companies by Craft.co URL (for tricky slugs / bulk .txt upload)
{ "companyUrls": [{ "url": "https://craft.co/notion-labs" }, { "url": "https://craft.co/stripe" }], "maxResults": 10 }
// 6) Lean firmographics only — skip competitors, M&A and leadership
{ "companyNames": ["Datadog", "Snowflake", "MongoDB"], "includeCompetitors": false, "includeAcquisitions": false, "includeLeadership": false }
// 7) Exact list, no discovery — scrape only the companies you pass (depth 0)
{ "companyNames": ["Stripe", "Adyen", "Plaid"], "maxDepth": 0 }
// 8) Filtered competitor sweep — keep the graph on-topic, drop unwanted sectors
{ "preset": "fintech", "maxDepth": 2, "industryKeywords": ["payments", "banking", "lending"], "industryBlocklist": ["hardware", "gaming"], "maxResults": 500 }

Names in companyNames auto-resolve; companyUrls is for exact URLs and bulk .txt / .csv uploads. You can combine both — they merge and dedupe.

Use cases

  • VC / PE sourcing & due diligence. Private valuations, multi-year revenue, funding totals and executive teams for a whole sector in one run — screen and prioritise without a seat license.
  • M&A research. Each company's subsidiary / acquisition list with links to the acquired entities' Craft.co profiles, plus the buyer's own financials.
  • Competitive intelligence. Pull a prospect's competitor list and recursively map an entire market with Competitor discovery depth.
  • Sales prospecting & ABM. Segment enterprise accounts by revenue, employee count, industry and geography; enrich target lists with financial context.
  • Financial benchmarking. Compare quarterly/annual income statements — revenue, net income, growth and gross margin — across a peer set.
  • LLM / RAG context. Feed structured financials + leadership + competitors into retrieval pipelines for grounded company Q&A.

Performance & throughput

The Actor fetches each Craft.co profile over plain HTTP (Cheerio — no browser), parsing the page's embedded structured-data layer, so it's fast and light. Datacenter proxy is sufficient — no residential needed, no external API key.

Throughput scales with Concurrent fetches (default 5) and your Apify plan. Craft.co rate-limits header-bare requests, so the default keeps concurrency moderate; pushing it high (10+) raises the per-session 403 rate and wastes compute, so it's not recommended. Competitor discovery depth multiplies the pool, runtime and cost at each level — Maximum companies is always your hard cap.

Integrations

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('foxlabs/craft-intelligence').call({
companyNames: ['Stripe', 'Airbnb', 'Notion'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("foxlabs/craft-intelligence").call(run_input={
"companyNames": ["Stripe", "Airbnb", "Notion"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item.get("revenueFormatted"))

Also works with Make / n8n / Zapier (Apify app → run this Actor, map the input), scheduled runs, webhooks, and the Apify MCP server so AI agents can call it as a tool.

Data quality

Every value comes straight from Craft.co's own structured data — never fabricated. A field Craft.co doesn't publish is returned as null, not a guess.

  • Richest coverage: public companies and well-tracked venture-backed startups — revenue, income statements, valuation/market cap, funding, executives, competitors and M&A.
  • Sparser coverage: small or lightly-tracked private companies often expose only identity plus a subset of financials.
  • Known Craft.co-side gaps: acquisition date / amount and competitor revenue are frequently null — Craft.co lists the relationship without the figures, and the Actor returns exactly what the page exposes.
  • Failed pages: Craft.co occasionally serves an anti-bot challenge to a single session; the Actor retires that session (fresh IP + headers) and retries. A small fraction of stubborn pages (~0.5% at scale) may still fail and are written to the dataset as an error row for transparency.

Pricing

Pay per result — $4 per 1,000 companies (~$0.004 each). You pay Apify for compute + proxy only; Craft.co charges no third-party fee, and datacenter proxy is sufficient (no residential). Apify's free tier includes $5/month of credits — about 1,250 companies before you pay anything.

CompaniesApprox. cost
1~$0.004
100~$0.40
1,000~$4
10,000~$40

Turning on Backfill from Owler fetches a second page for each company still missing revenue/employees, so it roughly doubles cost/time for those rows only — leave it off if you only want Craft.co's own data.

FAQ

Is Craft.co data publicly accessible / is this legal? Craft.co company profile pages are public; this Actor reads publicly available pages with no login. Always verify your own use complies with Craft.co's Terms of Service.

Why are some fields null? Financial depth varies by company. Specifically, acquisition dates/amounts and competitor revenue are frequently null because Craft.co lists the relationship without the figures — the Actor returns exactly what the page exposes, never invented values.

Can missing revenue/employees be filled from another source? Optionally. Set enrichFromOwler: true and any company missing revenue/employees on Craft.co is looked up on Owler.com — but only when Owler's domain matches the company's own website, so a coincidental name match (e.g. linearLinear Technology, the semiconductor maker) is rejected, never merged. Backfilled values are tagged revenueSource: "owler", revenueIsEstimate: true, employeesSource, plus a verified owlerUrl. Owler figures are range-based estimates, not Craft.co filings.

Public vs private companies? Public companies expose marketCap + sharePrice (valuation usually null); private companies expose valuation (market cap/share price null). Both expose revenue when available.

How do I scrape a specific list of companies? Type names in companyNames (auto-resolved to craft.co/<name>). If a name is ambiguous — e.g. Notion lands on a small unrelated company (the well-known one is notion-labs) — paste the exact https://craft.co/... URL in companyUrls instead.

How does competitor discovery work? With maxDepth: 0 the Actor scrapes only what you list. Raise it to trace Craft.co's competitor graph at run time — each company's competitors are enqueued up to maxDepth hops, filtered by the industry whitelist so it stays on-topic. It's live, so new entrants are picked up automatically.

Do I need an API key or a Craft.co account? No — no key, no login.

How fresh is the data? Live — each page is scraped the moment you run it, not served from a stale database.

What export formats are available? JSON, CSV, Excel, HTML, XML, or via the Apify API / integrations.

How many companies can I get in one run? Up to 100,000 via Maximum companies, which is also your hard cost cap.

Troubleshooting

  • "No companies" error → you didn't give it anything to scrape. Provide a preset, some company names/slugs, or Craft.co URLs (at least one is required).
  • A name resolved to the wrong company → a bare name maps to craft.co/<name>; when several companies share a name, paste the exact https://craft.co/... URL in companyUrls (e.g. notion-labs instead of Notion).
  • Discovery run is slow or expensive → each discovery depth level multiplies the pool, runtime and cost. Lower maxDepth, and remember Maximum companies caps total spend.
  • A profile came back as an error row / occasional misses → Craft.co served an anti-bot challenge; the Actor retires the session and retries. A small fraction (~0.5% at scale) still fail and are recorded as error rows rather than silently dropped.
  • Source. Data is read from Craft.co's public company profile pages. This Actor is not affiliated with, endorsed by, or sponsored by Craft.co; it redistributes publicly visible page data. Verify your use complies with Craft.co's Terms of Service.
  • Accuracy. Financial, valuation and headcount figures reflect exactly what Craft.co publishes; missing values are null, never fabricated. Craft.co data can lag or be incomplete for smaller companies.
  • Estimates are labelled. Optional Owler backfill values are range-based estimates and are tagged (revenueIsEstimate, employeesIsEstimate, revenueSource/employeesSource) so you can always tell them apart from Craft.co filings.
  • Personal data. Executive names/titles are business information published on the profile; if you process them you're responsible for your own lawful basis.

Support

Questions, a field you'd like added, or a custom build? Open the Issues tab on this Actor, or email info@foxlabs.com.tr. We reply fast.

If this Actor saves you time, a ⭐ review really helps.

Changelog

0.3 — 2026-07-05

  • Docs overhaul: API quick-start, full field table (now documenting slug, netIncome, sharePrice/sharePriceDate, and income-statement revenueGrowth/grossProfitMargin), realistic sample, JS/Python/Make/MCP integrations, data-quality, FAQ & troubleshooting.
  • Exposed the discovery industry blocklist as an input (was already applied via presets) and corrected the competitors/acquisitions field descriptions to match the actual output.

0.1

  • Initial release. Deep Craft.co company intelligence: identity, multi-year revenue/income statements, private valuation, public market cap & share price, total funding, executives, competitors, M&A / subsidiaries and offices — plus recursive competitor discovery and optional domain-verified Owler backfill.

🔗 foXLabs B2B Intelligence Suite

These company-intelligence scrapers work better together — match results by company domain for a 360° view:

ActorBest for
Owler — Company Data, Revenue, Competitors & FundingFirmographics, competitors, funding & news
Craft.co — Financials, Valuation & M&ARevenue/income statements, valuation, acquisitions, executives
Built In — Tech Stack, Employees & JobsTech stack, exact headcount & hiring signals
Glassdoor — Ratings, Reviews & SizeEmployer rating, reviews, % recommend, CEO approval, size
Indian Company Data🇮🇳 India: CIN, directors, financials & charges (MCA/Tofler)
Company Data EnrichmentBulk firmographics by name/domain — industry, HQ, size, revenue
Free Company Lookup🆓 Quick basics — domain, industry, HQ, logo (start here)

Part of the foXLabs data platform — public-data company, contact, ownership, financial, procurement & AI-search intelligence scrapers. Browse the full suite and free how-to guides at data.foxlabs.com.tr.