Dun & Bradstreet Scraper at a glance
Dun & Bradstreet Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes company, profile link, profileurl, encryptedduns and role, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.40 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Other
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.40 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 18 options
Scrape Dun & Bradstreet (dnb.com) business directory by company name, country, size, role or industry. Extract company profiles, revenue, employee counts, key executives, principals, contact details and stock information. Ideal for B2B lead generation, company research and market intelligence.
What Dun & Bradstreet Scraper can do
- The definitive firmographic source. Dun & Bradstreet maintains profiles on hundreds of millions of businesses with revenue, employee counts, corporate family roles and industry classification that most data providers resell.
- Search the way you think. Type a company name keyword plus an optional country, employee size range and corporate role; the directory applies every filter before results come back.
- Browse industries directly. Paste any directory industry page (country, region or city scoped) and the actor walks its listings page by page.
- Rich company profiles. Each record can be enriched with formatted revenue, exact employee counts with reliability metadata, key principals, phone, website, stock exchange, Fortune-style rankings, corporate family and similar companies.
- Recurring-run friendly. Incremental mode compares every scan against a saved baseline: unchanged companies are skipped, changed ones ship with the fields that moved, and disappeared companies can be reported.
- Clean structured output. Flat records with stable IDs, ready for spreadsheets, CRM imports, or direct API consumption.
Choose what to collect
These inputs let you configure Dun & Bradstreet Scraper - Companies, Revenue & Contacts. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Search looks companies up by name with optional filters. Links mode walks any page the directory publishes: industry browse pages (with region or city), and company profile pages. |
queriesarray | One or more company name keywords. Each keyword runs its own search; the record limit is shared between them. |
countrystring | Two-letter country code the search is scoped to, for example us, gb, de, in, cn. Leave as us for the United States. |
employeesMininteger | Optional lower bound on employee count, applied by the directory before results return. |
employeesMaxinteger | Optional upper bound on employee count, applied by the directory before results return. |
companyRolestring | Optional role in the corporate family tree. The directory only narrows its role counts, so this is applied to the collected results. |
urlsarray | Links mode: paste industry browse pages, region or city browse pages, company profile pages, or legacy listing links. Multi-URL, filter fields ignored, pagination walks forward. |
Show 11 more inputs
| Input | What it controls |
|---|---|
fetchDetailsboolean | Read each company's profile page to add revenue, employee counts, principals, contacts, stock listing, corporate family and similar companies. Turning this off ships search rows only and costs less. |
maxPagesinteger | How many result pages to walk per search or browse scope at most. Leave empty or 0 for no page limit: the record limit below is what stops a run. The directory serves the first 1,000 matches per scope. |
maxItemsinteger | Maximum company records to collect per run across all searches and links. 0 means unlimited. |
resumeFromRunIdstring | ID of an unfinished run to pick up from: records already collected by that run are skipped and the walk continues where it stopped. |
incrementalModeboolean | Compare every scanned record against the saved baseline: unchanged companies are skipped (no cost), changed ones ship with changeType and changedFields, and records that disappeared can be reported as EXPIRED. |
stateKeystring | Optional name for the saved baseline. Use one key per recurring scope so scheduled runs compare like with like. |
emitUnchangedboolean | Incremental mode: also push records whose data did not change (they keep changeType UNCHANGED and are charged as dataset rows). |
emitExpiredboolean | Incremental mode: push an EXPIRED row for every baseline record missing from a complete scan. Skipped automatically when a run stopped early. |
ignoreFieldsForChangesarray | Field names change detection should disregard (yours are added to the built-in noise list, which already covers result position and run bookkeeping). |
notionParentPageUrlstring | Optional Notion page URL: each collected record becomes a child page under it. |
maxNotifyListingsinteger | Cap on how many records a connector export carries. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
companyNameCompany (text)urlProfile link (link)profileUrlprofileUrlencryptedDunsencryptedDunscompanyRoleRole (text)industryNameIndustry (text)salesRevenueFormattedRevenue (text)addressStreetaddressStreetaddressCityCity (text)addressRegionaddressRegionaddressPostalCodeaddressPostalCodeaddressCountryCountry (text)Show 48 more fields
countrycountrytradeStyleNamestradeStyleNamesscopeKindscopeKindscopescopesearchQuerysearchQuerychangeTypeChange (text)firstSeenAtfirstSeenAtlastSeenAtlastSeenAtscrapedAtscrapedAtrevenueFormattedRevenue (text)salessalessalesCurrencysalesCurrencyrevenueYearrevenueYearrevenueReliabilityrevenueReliabilityannualRevenuesannualRevenuesfinancialHistoryfinancialHistoryemployeesConsolidatedValueEmployees (number)employeesConsolidatedScopeemployeesConsolidatedScopeemployeesConsolidatedReliabilityemployeesConsolidatedReliabilityemployeesThisSiteValueemployeesThisSiteValueemployeesThisSiteScopeemployeesThisSiteScopeemployeesThisSiteReliabilityemployeesThisSiteReliabilitykeyPrincipalKey principal (text)keyPrincipalPositionkeyPrincipalPositionprincipalsprincipalstotalPrincipalstotalPrincipalstotalContactsOnFiletotalContactsOnFilephonePhone (text)websiteWebsite (link)stockExchangeStock (text)stockTickerstockTickertradeStyleNametradeStyleNameindustriesindustriesparentIndustryparentIndustrysecondaryIndustrysecondaryIndustryownershipTypeownershipTypeentityTypeentityTypeisPrivateisPrivateisPartnershipisPartnershipisProprietorshipisProprietorshipisHeadquartersisHeadquartersranksrankscorporateFamilycorporateFamilysimilarCompaniessimilarCompaniescompanyLocationcompanyLocationdescriptiondescriptionfiscalPeriodEndfiscalPeriodEnddetailFetcheddetailFetchedExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"companyName": "Sample Industries Inc",
"encryptedDuns": "00000000000000000000000000000000",
"url": "https://www.dnb.com/business-directory/company-profiles/sample-industries-inc.00000000000000000000000000000000",
"companyRole": "Parent",
"industryName": "Computer Systems Design Services",
"revenueFormatted": "$12.5 M",
"sales": 12500000,
"salesCurrency": "USD",
"revenueYear": "2025",
"revenueReliability": "Actual",
"employeesConsolidatedValue": 412,
"employeesConsolidatedScope": "Consolidated",
"employeesConsolidatedReliability": "Actual",
"employeesThisSiteValue": 250,
"keyPrincipal": "Jane Doe",
"keyPrincipalPosition": "President and Chief Executive Officer",
"principals": [
{
"name": "Jane Doe",
"position": "President and Chief Executive Officer"
}
],
"totalPrincipals": 4,
"totalContactsOnFile": "1,204",
"phone": "(000) 000-0000",
"website": "www.sampleindustries.example",
"stockExchange": "NASDAQ:SMP",
"tradeStyleName": "Sample Industries",
"industries": [
"Computer Systems Design Services"
],
"parentIndustry": "Information",
"ownershipType": "Public",
"entityType": "Parent",
"isPrivate": false,
"ranks": [
{
"rank": 500,
"list": "Fortune 1000 Revenue Rank",
"year": "2026"
}
],
"corporateFamily": {
"globalHeadquarters": "Sample Industries Inc"
},
"addressStreet": "100 Example Pkwy Ste 300",
"addressCity": "Austin",
"addressRegion": "Texas",
"addressPostalCode": "78701",
"addressCountry": "United States",
"changeType": "NEW",
"detailFetched": true,
"scrapedAt": "2026-01-01T00:00:00Z"
}Ways to use this data
- Who: Sales and GTM teams building targeted prospect lists filtered by industry, size and corporate role.
- Who: Data teams enriching an existing company list with revenue bands, employee counts and executive names.
- Who: Market researchers mapping an industry across a country, region or city.
- Who: Ops teams keeping a CRM in sync: scheduled incremental runs flag new, changed and vanished companies.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Dun & Bradstreet Scraper return?
The documented output for Dun & Bradstreet Scraper includes company, profile link, profileurl, encryptedduns, role, industry, revenue and addressstreet. Availability of each field depends on the source page and the selected mode.
How much does Dun & Bradstreet Scraper cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.40 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I schedule recurring runs?
Yes. Pair a schedule with incremental mode and a fixed state key: the first run saves a baseline, later runs push only new or changed companies, and optional EXPIRED rows report companies that left the scope.
Why did a run return fewer records than the directory shows for my search?
Each scope serves its first 1,000 matches. Add a region, city, employee range or role filter to scope tighter instead of paging deeper.
Why did a run fail with a connection message?
The directory checks every connection and occasionally refuses an exit. The run opens a fresh connection and retries a bounded number of times, then uses the backup connection once; when that fails too it ends with an honest failure instead of an empty result. Re-running later usually resolves it.
Can an AI agent use this actor?
Yes. The dataset is flat JSON with stable record IDs, and MCP connectors hand results straight to agent workflows.
