Craft.co Company Intelligence Scraper avatar

Craft.co Company Intelligence Scraper

Pricing

Pay per event

Go to Apify Store
Craft.co Company Intelligence Scraper

Craft.co Company Intelligence Scraper

🏢 Extract public Craft.co company profiles into structured intelligence: financials, executives, operating metrics, offices, sectors, ESG signals, and competitors.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Turn supplied public Craft.co company profiles into structured, export-ready company intelligence.

The Actor extracts company identity, financial highlights, executives, operating metrics, office locations, sectors, ESG signals, and competitors. Give it exact profile URLs or slugs; receive one consistent JSON record per company.

  • 🏢 Track company profiles without copying tables by hand
  • 💰 Capture revenue, funding, and summary financial periods
  • 👥 Collect key people with titles and visible social links
  • 🌍 Export headquarters and office locations
  • 📊 Monitor operating metrics and ESG signals
  • 🧭 Map named competitors and their sectors

It uses the public company-profile surface only. No Craft account, paid Craft API key, user cookie, or CAPTCHA-solving service is required.

What does Craft.co Company Intelligence Scraper do?

Craft.co publishes rich public pages for many private and public companies. Those pages are useful to read but awkward to refresh at scale.

This scraper converts each supplied profile into a typed dataset row. It reads the page's embedded structured state rather than guessing from visual positions, preserving nested relationships between the company, executives, financial periods, offices, metrics, and competitors.

The Actor intentionally accepts exact profiles only. It does not promise unverified company search or directory discovery.

Who is it for?

Procurement and supplier-risk teams

Refresh a watchlist of suppliers and compare status, headquarters, sectors, ESG signals, financial changes, and named competitors.

Sales and revenue operations

Enrich CRM company records with website, founding year, leadership, sectors, locations, and public financial context.

Investors and market researchers

Build repeatable snapshots of financial periods, operating metrics, executive teams, locations, and competitor sets.

Data engineers

Schedule profile refreshes and deliver JSON, CSV, Excel, XML, or API data to a warehouse, spreadsheet, or enrichment pipeline.

Why use this Craft.co scraper?

  • Structured output: one stable company entity instead of copied page text
  • Exact targeting: URL and slug validation prevents unrelated pages
  • Fail-closed behavior: challenge pages are never emitted as paid records
  • Cost-aware routing: automatic mode tries direct Chromium before SHADER proxy fallback
  • Source fidelity: absent values are omitted, never invented
  • Apify-native delivery: schedules, webhooks, datasets, API, Make, Zapier, and MCP

What company data can I extract?

GroupExample fields
Identityname, slug, overview, type, status, founded year
Webwebsite, Crunchbase, LinkedIn, X/Twitter, Facebook, Instagram, YouTube
Locationheadquarters, address, city, state, country, coordinates, office count
Classificationsectors and tags
Financialheadline revenue, funding, revenue, EBIT, net income, gross profit, period
Peopleexecutive name, title, public professional links
Operationsmetric name, value, currency/unit, reporting period
Risk contextESG score and source profile
Market mapcompetitor name, Craft URL, type, sectors
Provenancesource URL and scrape timestamp

Coverage varies by company. The Actor returns what the public profile exposes.

Input

Use either companyUrls, companySlugs, or both.

{
"companyUrls": [
{ "url": "https://craft.co/google" },
{ "url": "https://craft.co/craft" }
],
"companySlugs": ["microsoft"],
"maxCompanies": 3,
"proxyMode": "AUTO"
}
FieldTypeDefaultPurpose
companyUrlsarraysample URLExact public Craft.co profile URLs
companySlugsstring arrayemptyProfile slugs such as google
maxCompaniesinteger10Hard output/cost cap, maximum 100
proxyModeenumAUTOAUTO, DIRECT, or SHADER
navigationTimeoutSecsinteger45Per-route browser timeout, 15–120 seconds

URLs must use craft.co and contain exactly one company slug path.

Output

One dataset row represents one company profile.

{
"sourceUrl": "https://craft.co/google",
"slug": "google",
"name": "Google",
"overview": "Google is a technology company...",
"type": "subsidiary",
"status": "active",
"foundedYear": 1998,
"website": "https://www.google.com/",
"headquarters": {
"address": "1600 Amphitheatre Parkway",
"city": "Mountain View",
"state": "CA",
"country": "United States",
"countryCode": "US",
"isHeadquarters": true
},
"locationCount": 116,
"sectors": ["Technology", "adtech", "cloud"],
"headlineFinancial": {
"kind": "revenue",
"value": 401426000000,
"currencySymbol": "$",
"period": "FY, 2025"
},
"keyPeople": [
{
"name": "Sundar Pichai",
"title": "CEO",
"linkedin": "https://www.linkedin.com/in/sundarpichai/"
}
],
"competitors": [
{
"name": "Pinterest",
"slug": "pinterest",
"url": "https://craft.co/pinterest",
"type": "public",
"sectors": ["Technology"]
}
],
"scrapedAt": "2026-07-22T00:00:00.000Z"
}

Numbers remain numbers for filtering and analysis. Nested arrays preserve useful detail.

How to scrape Craft.co company profiles

  1. Open the Actor input page.
  2. Paste one or more exact Craft.co company profile URLs.
  3. Alternatively, enter known company slugs.
  4. Keep maxCompanies low for the first run.
  5. Leave connection strategy on AUTO.
  6. Click Start.
  7. Preview the company intelligence dataset.
  8. Export it or connect an integration.

Duplicate URLs and slugs are removed before browser work begins.

How much does it cost to extract Craft.co company data?

The Actor uses pay-per-event pricing: a $0.001 start charge plus one charge for each successfully saved company profile.

Apify tierPrice per company profile
Free$0.0036586
Bronze$0.0031814
Silver$0.0024815
Gold$0.0019088
Platinum$0.0012725
Diamond$0.00089078

A one-company Bronze run costs about $0.0041814 before any platform-specific rounding. You are not charged an item event for blocked, invalid, or unparseable profiles. maxCompanies is a hard cap that helps control spend.

Prices were derived from a representative 1,024 MB cloud run and the standard 70% target-margin formula. The current Actor pricing tab remains authoritative.

Connection modes and anti-bot handling

AUTO is recommended. It starts with direct browser delivery, which is cheapest and often works, then makes one bounded attempt through a fresh SHADER proxy session if needed.

DIRECT never uses an Apify proxy. Choose it when you need predictable zero proxy traffic and know the source is accessible.

SHADER uses proxy rotation from the first request. Choose it when direct requests from your environment consistently receive a challenge.

The Actor blocks images, fonts, and media while keeping scripts needed for structured state.

Profile validation and data quality

A successful HTTP response alone is not enough. Before saving a row, the Actor verifies:

  • the page exposes Craft's embedded application state;
  • the state contains the requested company entity;
  • the company has both a display name and slug;
  • the page is not an anti-bot challenge;
  • arrays and references resolve into typed records.

If every route fails, the run exits non-zero instead of reporting false success with zero useful data.

Scheduling a company watchlist

Create an Apify schedule with a stable input list. Daily, weekly, monthly, or quarterly refreshes work well depending on the workflow.

A practical supplier-monitoring pipeline is:

  1. Store approved supplier Craft slugs in the task input.
  2. Run weekly.
  3. Send the resulting dataset to cloud storage or a database.
  4. Compare financial, leadership, status, ESG, and location fields against the prior snapshot.
  5. Alert only on meaningful changes.

Craft profile freshness depends on Craft's own update cycle.

Integrations

Google Sheets

Send each profile row to a shared research or vendor-risk sheet. Flatten selected nested values in the receiving automation when necessary.

Make and Zapier

Trigger runs from CRM changes, then map website, sectors, headquarters, executives, and headline financials into account fields.

Webhooks

Use an Actor run-finished webhook to start validation, diffing, or warehouse ingestion as soon as a dataset is ready.

Cloud storage and warehouses

Export JSON or CSV to Amazon S3, Google Cloud Storage, Azure, Snowflake, BigQuery, or your own ETL service.

API usage with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~craft-co-company-intelligence-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companySlugs":["google"],"maxCompanies":1,"proxyMode":"AUTO"}'

For longer lists, start an asynchronous run and poll its status or use a webhook.

API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/craft-co-company-intelligence-scraper').call({
companyUrls: [{ url: 'https://craft.co/google' }],
maxCompanies: 1,
proxyMode: 'AUTO',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/craft-co-company-intelligence-scraper").call(
run_input={
"companySlugs": ["google", "microsoft"],
"maxCompanies": 2,
"proxyMode": "AUTO",
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Keep tokens in environment variables or a secrets manager.

Use with Apify MCP

Connect the Actor to Claude Code or another MCP client through Apify MCP.

Claude Code setup

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/craft-co-company-intelligence-scraper"

Claude Desktop, Cursor, and VS Code setup

Add this JSON block to the MCP configuration used by Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/craft-co-company-intelligence-scraper"
}
}
}

Example prompts:

  • “Extract the public Craft profile for Google and summarize its latest revenue, executives, and operating metrics.”
  • “Refresh these supplier Craft slugs and flag changes in status, headquarters, and ESG score.”
  • “Build a competitor table from these three exact Craft company profiles.”

Tips for reliable runs

  • 🎯 Prefer exact profile URLs when a company name is ambiguous.
  • 🧪 Test one profile before scheduling a large watchlist.
  • 💸 Set maxCompanies to the number you actually need.
  • 🛡️ Keep AUTO unless logs show a reason to force a route.
  • ⏱️ Raise the timeout only for consistently slow pages.
  • 🔁 Retry transient source failures later rather than creating duplicate runs immediately.
  • 📦 Preserve nested JSON when executive, metric, or location details matter.

Limitations

  • Input is exact profile URLs or slugs; no general company-name search is included.
  • Data availability and freshness are controlled by Craft.co.
  • Some profiles omit financials, ESG data, executives, social links, or precise addresses.
  • Craft can change its page structure or anti-bot controls.
  • A company may have many locations or financial periods, producing large nested records.
  • The Actor does not access Craft's paid GraphQL API or private platform.
  • It does not infer missing values from third-party sources.

This Actor extracts public company-profile data. You are responsible for ensuring your use complies with applicable laws, contracts, database rights, and Craft.co's terms.

Do not use the output for unlawful discrimination, harassment, spam, or attempts to identify sensitive personal information. Apply reasonable schedules and limits. Avoid collecting more data than your workflow needs.

Public availability does not remove your compliance obligations.

Troubleshooting

“Add at least one company URL or company slug”

The input contained no targets. Add companyUrls, companySlugs, or both.

“Only craft.co company profile URLs are supported”

A URL used another domain. Supply an exact https://craft.co/<company-slug> profile.

“Expected a Craft.co company profile URL with one slug”

The URL was a search, comparison, news, or deeper page rather than a company profile.

Direct route failed

Use AUTO so the Actor can attempt SHADER recovery. Check logs for the status, timeout, or challenge reason.

Run failed with no output

Every requested profile failed validation. This is intentional fail-closed behavior. Verify the slugs in a browser, try a small input later, or force SHADER mode.

FAQ

Does it need my Craft.co login?

No. V1 reads anonymous public company profile pages only.

Can I enter a plain company name?

No. Enter a known Craft slug or exact profile URL. This avoids ambiguous matches and false company resolution.

Are failed profiles billed as results?

No. The item event is charged only after a validated record is pushed to the dataset.

Why are some fields absent?

Craft coverage varies. The Actor omits unavailable optional values rather than guessing or returning misleading placeholders.

Can I extract multiple companies?

Yes. Combine URLs and slugs and set maxCompanies up to 100.

Can I monitor changes?

Yes. Schedule the same watchlist and compare datasets over time in your preferred database, spreadsheet, or automation.

Is every office returned?

The Actor resolves the office references embedded in the loaded public profile. Coverage reflects what Craft supplies on that page.

Combine company-profile intelligence with source-specific datasets when your workflow needs another perspective:

Check each Actor's current input and output contract before building a combined pipeline.

Support

If a valid public Craft company profile repeatedly fails, open an Actor issue and include:

  • the exact profile URL;
  • a redacted input;
  • the run ID;
  • the connection mode;
  • the relevant error log lines.

Do not include API tokens, private credentials, or confidential watchlists.