Kompass Company Directory Scraper
Pricing
Pay per event
Kompass Company Directory Scraper
Extract public Kompass company and supplier records by country, category, search, or profile URL for B2B sales, sourcing, procurement, and market research.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract structured public company and supplier records from Kompass country-directory URLs.
Use directory, category, search, and individual company profile URLs from multiple Kompass country domains in one run. The Actor returns company names, locations, descriptions, business activities, employee ranges, public websites, profile identifiers, and contact availability where those fields are publicly exposed.
What this Actor does
Kompass Company Directory Scraper turns URL-driven supplier research into a reusable dataset.
It can:
- accept public Kompass URLs from multiple country domains;
- infer the country and search intent from each URL;
- paginate through matching company results;
- enrich directory cards with public profile fields;
- deduplicate companies across overlapping inputs;
- preserve useful card data when one detail page fails;
- stop at a global
maxItemslimit; - export results as JSON, CSV, Excel, XML, or RSS through Apify.
The implementation uses server-rendered data from a public Kompass partner directory when direct Kompass HTML is protected by DataDome. It needs no browser or paid proxy traffic. Every row includes both the original sourceUrl and the exact dataSourceUrl, so data provenance stays explicit.
Who is it for
B2B sales teams
Build prospect lists by country and business category, then send public company websites and addresses to a CRM enrichment step.
Sourcing and procurement analysts
Compare manufacturers and suppliers across markets without manually copying company cards.
Manufacturers and distributors
Research potential channel partners, vendors, and competitors in repeatable batches.
Import and export teams
Refresh country-specific supplier lists on a schedule and compare changes over time.
Market researchers
Create structured market maps with company, city, activity, and employee-range fields.
Why use this Actor
- URL driven: start from the exact Kompass pages already used in your research.
- Multi-country: mix
us.kompass.com,gb.kompass.com, and other two-letter country domains. - Partial-result safe: directory-card records are retained if optional profile enrichment fails.
- Transparent provenance: input and extraction URLs are recorded separately.
- Bounded: global record and per-URL page limits prevent accidental unbounded crawls.
- Typed output: stable fields are ready for spreadsheets, databases, agents, and APIs.
- Public scope only: no EasyBusiness account, private export, or CAPTCHA solving is required.
Supported Kompass URLs
The Actor accepts these public URL families:
- Country manufacturer directories, for example:
https://us.kompass.com/x/producer/ - Category or activity pages, for example:
https://us.kompass.com/a/industrial-machinery/ - Search pages with
searchKeywordsorqquery parameters. - Company profile pages, for example:
https://us.kompass.com/c/nasbite-international/us946509/
The host must be a two-letter Kompass country domain. Login, cart, checkout, EasyBusiness, and export URLs are intentionally rejected or unsupported.
Data extracted
| Field | Meaning |
|---|---|
companyName | Public company name |
profileUrl | Public extracted profile URL, or the canonical Kompass URL for profile-only fallback |
companyId | Public profile identifier when exposed |
verified | Verification status, or null when not published |
city, country | Public company location |
address, postalCode | Public address fields |
description | Public company description |
supplierActivities | Business categories and supplier activities |
products | Public product names when available |
employeeRange | Published employee-count band |
rating, reviewCount | Public partner-directory review information |
phone, email | Public values when exposed without login |
phoneAvailable, emailAvailable | Whether the public profile exposed the contact field |
website | Public company website |
sourceUrl | Original Kompass input URL |
dataSourceUrl | Exact page used to extract the record |
scrapedAt | ISO 8601 extraction timestamp |
Unavailable fields are returned as null or an empty array. The Actor never invents contact data.
Getting started
- Open the Actor in Apify Console.
- Add one or more public Kompass URLs.
- Keep
maxItemssmall for your first run. - Leave Enrich company profiles enabled for descriptions, addresses, and websites.
- Set a page safety limit for each input URL.
- Start the run.
- Open the Companies dataset view.
- Export the results or connect the dataset to your workflow.
A small input:
{"startUrls": [{ "url": "https://us.kompass.com/x/producer/" }],"maxItems": 25,"includeDetails": true,"maxPagesPerUrl": 3}
Input parameters
startUrls
Required array of public Kompass URLs. Strings and request-list objects with a url field are supported by the Apify input editor.
maxItems
Maximum unique companies saved across all URLs.
- default:
25 - minimum:
1 - maximum:
10000
includeDetails
When true, the Actor fetches public profile HTML to add description, address, postal code, website, verification, products, and detailed categories.
When false, it returns faster card-level records. Fields available only on detail pages remain null.
maxPagesPerUrl
Pagination safety limit applied separately to every directory, category, or search URL.
- default:
10 - minimum:
1 - maximum:
100
Output example
A representative current record looks like this:
{"companyName": "Example Industrial Systems LLC","profileUrl": "https://www.b2bstars.com/en-us/kompass/company/example-industrial-systems-llc","companyId": "1234567","verified": null,"city": "Springfield","country": "US","address": "100 Example Avenue","postalCode": "12345","description": "Supplier of industrial automation equipment and maintenance services.","supplierActivities": ["Manufacturing","Industrial machinery"],"products": [],"employeeRange": "50-99","rating": 4,"reviewCount": 42,"phone": null,"phoneAvailable": false,"email": null,"emailAvailable": false,"website": "https://www.example.com","sourceUrl": "https://us.kompass.com/x/producer/","dataSourceUrl": "https://www.b2bstars.com/en-us/kompass/company/example-industrial-systems-llc","scrapedAt": "2025-01-15T12:00:00.000Z"}
The example is anonymized. Actual output reflects public source values.
Pricing
This Actor uses pay-per-event pricing.
| Event | Price |
|---|---|
| Run start | $0.005 per run |
| Company record, Free plan | $0.00016963 per record |
| Company record, Bronze plan | $0.00014751 per record |
| Company record, Silver plan | $0.00011506 per record |
| Company record, Gold plan | $0.000088504 per record |
Higher Apify plans receive lower per-record tiers shown in Console.
Examples before Apify platform usage charges:
- 25 records on Free: about
$0.00924 - 100 records on Free: about
$0.02196 - 1,000 records on Bronze: about
$0.15251
A record is charged only after it is saved to the dataset. Optional detail enrichment does not create a second record charge.
Accuracy and completeness
Kompass coverage and public fields vary by company and country.
- A directory card may contain only name, city, country, and category.
- A public partner profile may add description, address, website, and employee range.
- Phone and email fields are often absent from anonymous pages.
verifiedremainsnullwhen verification is not published by the extraction surface.productsremains empty when no public product list is exposed.- A canonical profile URL not found on the partner surface produces a useful identity record from its public slug, country, and company ID.
Use null-aware processing downstream.
Pagination, limits, and deduplication
maxItems is global. If the first URL reaches the limit, later URLs are not visited.
maxPagesPerUrl prevents one broad directory from consuming an unbounded run.
Deduplication uses normalized company name plus country. Overlapping category URLs therefore do not normally create duplicate dataset rows.
Failure behavior
Malformed URLs and unsupported hosts fail with a non-zero exit code.
Transient profile failures preserve card-level data and emit a warning.
A run fails rather than silently succeeding with zero records when no useful companies can be produced.
If an individual canonical profile is not available on the public partner directory, the Actor preserves its canonical Kompass identity fields and logs that enrichment was unavailable.
Workflow ideas
Supplier-list refresh
Schedule the Actor weekly, export the dataset, and upsert rows into your procurement database by country and normalized company name.
CRM enrichment
Send companyName, website, city, and supplierActivities to HubSpot, Salesforce, or a custom CRM workflow.
Multi-country comparison
Combine equivalent category URLs from several Kompass country domains. Group results by country and supplierActivities in a spreadsheet or BI tool.
Website research pipeline
Pass non-null website values to a website contact finder or company-intelligence Actor.
AI supplier screening
Give an agent the typed descriptions and activity lists, then ask it to rank suppliers against sourcing criteria. Keep final procurement decisions under human review.
Run with the Apify API
Set APIFY_TOKEN in your environment.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~kompass-company-directory-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url":"https://us.kompass.com/x/producer/"}],"maxItems": 25,"includeDetails": true,"maxPagesPerUrl": 3}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/kompass-company-directory-scraper').call({startUrls: [{ url: 'https://us.kompass.com/x/producer/' }],maxItems: 25,includeDetails: true,maxPagesPerUrl: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/kompass-company-directory-scraper').call(run_input={'startUrls': [{'url': 'https://us.kompass.com/x/producer/'}],'maxItems': 25,'includeDetails': True,'maxPagesPerUrl': 3,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with MCP and AI agents
Claude Code
Add the Apify MCP server to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/kompass-company-directory-scraper"
Claude Desktop
Add this remote MCP server to your Claude Desktop configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/kompass-company-directory-scraper"}}}
Cursor
Open Settings → Tools & MCP, add a remote HTTP server, and use:
https://mcp.apify.com?tools=automation-lab/kompass-company-directory-scraper
VS Code
Add the same remote HTTP URL to your workspace MCP configuration, then enable the automation-lab/kompass-company-directory-scraper tool.
Example prompts:
- “Run the Kompass Company Directory Scraper for this US manufacturer URL and return 50 companies.”
- “Compare activity categories from these US and UK Kompass URLs.”
- “Extract the public profile identity for this Kompass company URL.”
Integrations
Use Apify integrations to send completed datasets to:
- Google Sheets;
- Slack;
- Zapier;
- Make;
- webhooks;
- Amazon S3;
- GitHub Actions;
- custom applications through
apify-client.
For large workflows, consume dataset pages incrementally instead of loading the full export into memory.
Responsible use and legality
This Actor extracts public business-directory information.
You are responsible for:
- complying with applicable laws and website terms;
- using business contact information for a lawful purpose;
- honoring marketing consent and opt-out requirements;
- minimizing personal data;
- securing exported datasets;
- respecting intellectual-property and database rights.
The Actor does not access EasyBusiness, login-only exports, decision-maker records, or private credentials. Do not use it to circumvent access controls.
Troubleshooting
“Unsupported host”
Use a public two-letter Kompass country domain such as us.kompass.com or gb.kompass.com.
“Unsupported Kompass URL shape”
Use a directory, category, search, or /c/... company profile URL. Login, checkout, and arbitrary pages are not supported.
Fewer fields than expected
Turn on includeDetails. Some companies still publish only partial anonymous information; null fields are expected.
A profile returned only identity fields
The canonical profile was not indexed by the public partner directory. The Actor preserved the name slug, country, profile URL, and public company ID rather than inventing details.
No records
Check that the URL describes a real public company/category, reduce filters, and inspect the run log. The Actor fails empty runs so automation can detect them.
Related Automation Lab Actors
- Europages Supplier Scraper for another European B2B supplier directory.
- Made-in-China Scraper for manufacturer and product research.
- Global Sources Supplier Product Scraper for supplier and product discovery.
Use related sources when you need broader marketplace coverage, then deduplicate by company website and normalized name.
FAQ
Does it require a Kompass account?
No. The Actor is limited to anonymous public fields.
Does it scrape EasyBusiness exports or decision makers?
No. Paid exports, login-only records, and private decision-maker data are out of scope.
Can I use multiple countries in one run?
Yes. Add URLs from multiple two-letter Kompass country domains to startUrls.
Does maxItems apply per URL?
No. It is the global dataset limit. maxPagesPerUrl is the per-URL safety limit.
Why is profileUrl sometimes a partner-directory URL?
Direct Kompass HTML is protected by DataDome. The Actor uses a public Kompass partner directory and records the exact extraction page in dataSourceUrl. For unmatched profile inputs, the canonical Kompass URL is retained.
Are phone numbers and emails guaranteed?
No. They are returned only when publicly visible without login. Use phoneAvailable and emailAvailable to distinguish an observed absence from unavailable card-level enrichment.
Can I schedule recurring runs?
Yes. Use Apify schedules and a webhook or integration to process each completed dataset.
Is the output stable?
Field names and types are stable, but source completeness varies. Build downstream logic that accepts null and empty arrays.