Dun & Bradstreet Company Scraper
parseforge/dnb-scraper
Lead generationOtherAutomation
Extract company data from the Dun & Bradstreet business directory. Returns DUNS number, employee count, revenue, industries, named contacts, location and corporate role: searchable by keyword, country, family-tree role and company size.
- Total users
- 47
- Monthly active
- 6
- Total runs
- 1.5K
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 15 hours ago
Overview
Dun & Bradstreet Company Scraper - DUNS, Revenue & Employee Data
Scrape company profiles from the Dun & Bradstreet business directory by keyword or direct URL. Every company comes with its 9-digit DUNS number, employee count, annual revenue, industries, corporate role, named principal, and full address. No login or API key. Export to CSV, JSON, Excel, or XML.
D&B's official API needs a paid subscription, a contract, and strict usage limits. This reads the public company directory directly, filtered by country, family-tree role, and employee range, and returns each match in one fixed schema.
| Who uses it | What they scrape Dun & Bradstreet for |
|---|---|
| Sales and RevOps teams | Prospect lists keyed by DUNS, with revenue and headcount for scoring |
| Market researchers | Industry landscapes sized by revenue and employees |
| Recruiters | Companies filtered by headcount and country for talent sourcing |
| Investors and analysts | Screening private companies that file nothing publicly |
| Data teams | DUNS numbers to reconcile CRM, ERP, and vendor records |
What it does
This Actor collects Dun & Bradstreet company profiles by search query or direct URL, and returns each one as a flat row.
- ๐ Search query: a company name or keyword like "Apple" or "logistics" returns matching profiles.
- ๐ Direct URLs: paste D&B company profile URLs to pull specific companies, or D&B search URLs to run their query.
- ๐ Country filter: restrict results to one country with an ISO Alpha-2 code like US, DE, or GB.
- ๐ข Family-tree role: parent, branch, subsidiary, domestic ultimate, or global ultimate.
- ๐ฅ Employee range: minimum and maximum headcount, applied by D&B before results are returned.
- ๐ Detail enrichment: one extra request per company adds the DUNS number, employee count, revenue, website, industries, ranks, and the named key principal.
- ๐ Split by country: re-runs a query once per country so a single keyword can return far more than the directory's 1,000-row-per-query ceiling.
What you can do with Dun & Bradstreet data
๐ฏ Build a scored B2B prospect list.
Search "software" with countryCode: US and minEmployees: 50, turn on detail enrichment, and every row lands with revenue and headcount to sort by.
๐ Reconcile records on DUNS.
Detail enrichment returns the real 9-digit DUNS number, which is the join key between your CRM, your ERP, and most vendor-risk databases.
๐ Size an industry.
Scrape every match for "pharma" with Split by country, then aggregate revenue and employees by country and industry.
๐ข Find the ultimate parent.
Set the family-tree role to Global Ultimate to list only top-of-tree entities, or Subsidiary to enumerate the branches under a group.
Why choose this scraper
| What you get | |
|---|---|
| No API key needed | Reads public D&B directory pages, no registration or contract |
| Real DUNS numbers | The 9-digit DUNS, not the site's internal profile hash |
| Fields the page hides | Employee counts and revenue that the rendered page masks |
| Rich filters | Country, five family-tree roles, and an employee range, applied at the source |
| Honest volume | Automatic country fan-out to work around D&B's 1,000-row query ceiling |
How it compares
No other Store Actor targets Dun & Bradstreet the same way, so the honest comparison is with the alternatives teams actually weigh.
| Dun & Bradstreet Company Scraper | D&B Hoovers subscription | Build it in-house | |
|---|---|---|---|
| Setup | Run it now, zero config | Sales call and contract | Days of engineering |
| Cost | Pay per result | Four figures a year, minimum | Engineering time |
| When D&B changes | Maintained for you | Not your problem | You fix it |
| Output | Fixed JSON schema, CSV/Excel export | Their UI and exports | Whatever you build |
| Coverage | Public directory only | Full commercial database | Public directory only |
What a D&B company row looks like
Every company returns as one flat JSON row. Here is a real record with detail enrichment on, unedited apart from a trimmed description:
{
"companyName": "Ingram Micro Inc.",
"duns": "004919486",
"profileUrl": "https://www.dnb.com/business-directory/company-profiles.ingram_micro_inc.0f5f6a123eca1eafdf687775b69844f4.html",
"companyId": "0f5f6a123eca1eafdf687775b69844f4",
"companyRole": "Subsidiary",
"corporateFamilyLabel": "Ultimate Parent",
"tradeStyleName": "IM-logistics an Ingram Micro Division (Loudoun Co)",
"industryName": "Professional and Commercial Equipment and Supplies Merchant Wholesalers",
"parentIndustryName": "Wholesale Trade",
"industries": [
"Professional and Commercial Equipment and Supplies Merchant Wholesalers",
"Merchant Wholesalers, Durable Goods",
"Wholesale Trade",
"Computer software"
],
"revenue": 32760081006,
"revenueFormatted": "$32.76 billion",
"revenueCurrency": "USD",
"revenueFiscalYear": "2026",
"revenueReliability": "Actual",
"employees": 22200,
"employeesThisSite": 4000,
"employeesScope": "Consolidated",
"employeesReliability": "Actual",
"employeeGrowthPercent": "-19.0% over 1-3 years",
"website": "www.ingrammicro.com",
"description": "Ingram Micro is one of the largest global providers of technology, mobility, and cloud platform solutions...",
"keyPrincipal": "Paul Bay",
"keyPrincipalTitle": "Chief Executive Officer",
"contacts": [{ "name": "Paul Bay", "position": "Chief Executive Officer" }],
"totalContacts": 6848,
"totalPrincipals": 4,
"isPrivateCompany": true,
"stockExchange": null,
"stockTicker": null,
"ranks": null,
"competitorCount": 3,
"competitorIndustry": "Professional and Commercial Equipment and Supplies Merchant Wholesalers",
"address": "1600 E Saint Andrew Pl",
"fullAddress": "1600 E Saint Andrew Pl Santa Ana, CA, 92705-4926 United States",
"city": "Santa Ana",
"region": "California",
"zipCode": "92705-4926",
"country": "United States",
"locationLabel": "Santa Ana, CA, United States",
"searchQuery": "logistics",
"scrapedAt": "2026-08-19T19:47:35.515Z"
}
Which fields come from where. Search results alone give you the identity and address block. Everything else needs Include company details, which fetches the company's profile page.
| Field group | Without details | With details | Fill rate with details |
|---|---|---|---|
companyName, profileUrl, companyId, companyRole, industryName, address, city, region, zipCode, country, locationLabel |
โ | โ | 100% |
duns (9-digit), fullAddress, parentIndustryName, industries, isPrivateCompany, corporateFamilyLabel, totalContacts, totalPrincipals |
: | โ | 100% |
employees, employeesThisSite, employeesScope, employeesReliability |
: | โ | 100% |
revenue, revenueCurrency, revenueFiscalYear, revenueReliability |
: | โ | 100% |
keyPrincipal, keyPrincipalTitle, contacts |
: | โ | 100% |
website |
: | โ | ~95% |
competitorCount, competitorIndustry |
: | โ | ~55% |
tradeStyleName, description, employeeGrowthPercent |
partial | โ | ~45% |
stockExchange, stockTicker, ranks, revenueFormatted |
: | โ | public companies only |
Fill rates measured on a 25-company sample from the live directory.
What D&B does not expose publicly, and this Actor therefore does not return: phone numbers, year founded or incorporated, legal company type, the full contact roster beyond the key principal, and the named levels of the corporate family tree. D&B blanks those out for anonymous visitors and sells them through D&B Hoovers. totalContacts still tells you how many contacts exist behind that wall. The employee-range filter works even though those values are gated, because D&B applies it server-side.
Configure the run
Drive the Actor from a search query, several queries, or direct D&B URLs. Filters are applied by D&B before results come back, so only matches reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"searchQuery": "Apple",
"maxItems": 10,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
A scored prospect list:
{
"searchQuery": "logistics",
"countryCode": "US",
"minEmployees": 50,
"includeDetails": true,
"maxItems": 1000,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
Past the per-query ceiling, with several keywords and a country fan-out:
{
"searchQueries": ["freight forwarder", "customs broker", "shipbroker"],
"splitByCountry": true,
"includeDetails": true,
"maxItems": 20000,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
The 1,000-row ceiling. D&B stops paginating a query after its 1,000th row, whatever page size you ask for. A query with 300,000 matches still serves only the first 1,000. Three ways past it, and they combine: add more queries in Additional search queries, narrow with Country, or turn on Split by country to re-run each query once per country D&B reports for it. The run logs a warning whenever a query hits the ceiling with matches left behind.
Pricing
Pay-per-event: $15.99 per 1,000 result items, dropping to $11.99 at higher volume. You pay only for the company rows written to your dataset: nothing is billed for a company D&B refused to return, and detail enrichment is included at no extra charge.
| Companies collected | Approximate cost |
|---|---|
| 100 | $1.60 |
| 1,000 | $15.99 |
| 10,000 | $159.90 |
Higher monthly volume moves you down a discount tier: Bronze $14.66, Silver $13.34, Gold and above $11.99 per 1,000. New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 companies as a preview. Upgrade your Apify plan to lift the limit.
Run it
- Create a free Apify account with $5 in credit.
- Open the Dun & Bradstreet Company Scraper.
- Set your query and filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Dun & Bradstreet through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/dnb-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
The run fails with an explicit message when D&B reports zero matches. Broaden the search query, and relax the country, family-tree role, and employee filters, a narrow employee range with a country filter can legitimately match nothing.
My query has 300,000 matches but I only got 1,000.
That is D&B's per-query ceiling, not a bug. Add more keywords under Additional search queries, set a Country, or turn on Split by country.
Employees, revenue, or DUNS are missing.
Turn on Include company details. Those fields live on the company profile page, not in search results, so they are empty on rows collected without it.
Phone and year founded are always empty.
D&B masks them for anonymous visitors. They are not scraped and are not billed. See the field table above.
The run is slow.
Detail enrichment costs one extra request per company. Turn it off, or lower Maximum companies, if you only need the identity and address block.
I get blocked or see 403s.
D&B accepts residential exits and refuses Apify's datacenter pool, so leave the proxy on RESIDENTIAL. If you select another group and it gets refused, the run rotates its session, then switches itself to residential rather than failing. A run that still fails end to end is usually a proxy country the site rate-limits: try a different one.
FAQ
| Question | Answer |
|---|---|
| Do I need a Dun & Bradstreet API key? | No. This Actor reads the public D&B business directory, so no registration, contract, or API key is required. |
| Is this the same data as D&B Hoovers? | No. It is the public directory subset. Hoovers sells the full commercial database, including the fields listed as unavailable above. |
| Do I get a real DUNS number? | Yes, the 9-digit DUNS, when Include company details is on. The companyId field is D&B's internal profile hash, which is not a DUNS number. |
| How many companies can I collect in one run? | As many as your queries return. D&B serves at most 1,000 rows per query, so volume comes from more queries, a country filter, or Split by country. |
| Can I scrape a specific company by URL? | Yes. Paste D&B company profile URLs into D&B URLs and each one is fetched directly. |
| Can I filter by country? | Yes, with an ISO Alpha-2 code like US, DE, or GB. |
| What is the difference between the roles? | They are D&B family-tree positions: Parent/Headquarters, Branch/Division, Subsidiary, Domestic Ultimate, and Global Ultimate. |
| Does the Actor handle pagination? | Yes, up to D&B's 1,000-row ceiling per query. |
| What does it cost? | $15.99 per 1,000 company rows, down to $11.99 at higher volume. Detail enrichment is included at no extra charge. |
| Can I export the data? | Yes: CSV, JSON, Excel, or XML from the dataset, or straight from the API. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Dun & Bradstreet, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| searchQuery | string | Company name or keyword to search for (e.g. "Apple", "Goldman Sachs", "pharma"). | Apple |
| maxItems | integer | How many companies to collect in this run, across all queries. D&B serves at most 1,000 rows per query: use several queries or Split by country to go past that. | 10 |
| includeDetails | boolean | Fetch the company profile page for every result. Adds the 9-digit DUNS number, employee count, revenue, website, industries, named contacts, corporate role and ranks. One extra request per company, so it is slower and billed separately. | false |
| searchQueries | array | Extra keywords to search in the same run. Each query gets its own 1,000-row budget from D&B. | not set |
| splitByCountry | boolean | Re-run each query once per country D&B reports for it. Turns one 1,000-row query into up to 1,000 rows per country. Much slower: leave off unless you need the volume. | false |
| startUrls | array | D&B search URLs (these override Search Query) or D&B company profile URLs for direct lookup, e.g. https://www.dnb.com/business-directory/company-profiles.tesla_inc.e337e93c824d992066152d1a14d8d8e8.html | not set |
| countryCode | string | Filter results by country (ISO Alpha-2 code, e.g. US, DE, GB, CA). | not set |
| companyRole | string (6 options) | Filter by the company's role in its corporate family tree. | all |
| minEmployees | integer | Only return companies with at least this many employees. Applied by D&B before results are returned. | not set |
| maxEmployees | integer | Only return companies with at most this many employees. Applied by D&B before results are returned. | not set |
| proxyConfiguration | object | Proxy used to reach D&B. Residential is the group the site accepts; datacenter exits are refused. If you pick another group and it gets blocked, the run switches to residential on its own. | {"useApifyProxy":true,"apifyProxyGroups" |
Pricing
from $11.99 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged once when the run starts. | $0.005 |
| Result Item | Charged once per result collected. | $0.01199 to $0.01599 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~dnb-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQuery": "Apple",
"maxItems": 3
}' Examples
Input that runs as-is.
{
"searchQuery": "Apple",
"maxItems": 3
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
