# Dun & Bradstreet Scraper (`parsebird/dnb-scraper`) Actor

Extract company data from Dun & Bradstreet's public business directory. Search by name, industry, location, or NAICS/SIC code. Returns firmographic data: address, phone, website, industry classification, revenue range, employee count, founding year, company hierarchy, and key executives.

- **URL**: https://apify.com/parsebird/dnb-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.89 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Dun & Bradstreet Scraper

The Dun & Bradstreet Scraper searches D\&B's Business Directory by company name or keyword and extracts company name, DUNS number, address, industry, and location type — with optional deep enrichment for revenue, key principal, and register data.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search any keyword or company name across 190+ countries and get structured firmographic data — DUNS number, address, industry classification, parent/subsidiary status, and (optionally) revenue and key principal — ready for lead lists, KYC checks, or market research.
</td>
</tr></table>

##### Copy to your AI assistant

```
Use the Apify Actor "parsebird/dnb-scraper" (Dun & Bradstreet Scraper) via the ApifyClient: client.actor("parsebird/dnb-scraper").call(run_input={"queries": ["software"], "country": "US", "maxItemsPerQuery": 200, "scrapeCompanyProfiles": False}) — inputs are queries (array of company names or keywords — required), country (two-letter ISO code, default "US"), maxItemsPerQuery (integer, default 50, paginated automatically), scrapeCompanyProfiles (boolean, default false — visits each company's D&B profile for revenue, key principal, and financials), and proxyConfiguration (Apify Proxy, Unblocker required and used by default); output items contain companyName, duns, companyProfileUrl, address, city, region, zipCode, country, countryRegion, industryName, locationType, tradeStyleNames, searchTerm, scrapedAt, and — when scrapeCompanyProfiles is on — revenue, revenueValue, revenueCurrency, revenueYear, keyPrincipal, parentIndustryName, registeredDuns, totalPrincipals, competitorsIndustry, similarCompaniesCount, employees, phone, and incorporatedYear; full API spec at https://apify.com/parsebird/dnb-scraper/api and get an API token at https://console.apify.com/account/integrations.
```

#### What does the Dun & Bradstreet Scraper do?

[Dun & Bradstreet](https://www.dnb.com/) maintains one of the largest global business directories, indexing companies by DUNS number, industry, revenue, and corporate family structure. The Dun & Bradstreet Scraper automates D\&B's Business Directory search so you don't have to click through it by hand:

- 🔍 Search by company name or industry keyword (e.g. "software", "logistics", "renewable energy")
- 🌍 Filter by country — 190+ two-letter ISO codes, from the US (deepest coverage) to niche markets
- 📇 Get DUNS number, full address, industry classification (NAICS-based), and parent/subsidiary/branch location type for every result
- 📈 Optionally enrich each company with its full D\&B profile: formatted and numeric revenue, revenue year and currency, key principal name, register (DUNS) number, employee count, phone, and similar-company count
- 🔁 Automatic pagination up to your requested item count per query
- ⚡ Runs on Apify's infrastructure with automatic proxy handling — no need to manage D\&B's bot protection yourself

Feed it a short list of keywords or hundreds of them — each query is paginated and enriched independently.

#### Country coverage

D\&B's directory is global. Set the `country` parameter to focus your search on any two-letter ISO code, for example:

| Code | Country |
|---|---|
| `US` | United States — richest coverage, most complete revenue and principal data |
| `GB` | United Kingdom |
| `DE` | Germany |
| `FR` | France |
| `CA` | Canada |
| `AU` | Australia |
| … | 190+ other two-letter ISO country codes |

The `US` market has by far the deepest data, including the most complete revenue, employee, and key-principal coverage. Other countries return solid core firmographic data (name, address, industry) with lighter financial detail.

#### What data can you extract from D\&B's Business Directory?

**Core fields** (every result):

| Field | Description |
|---|---|
| `companyName` | Company primary name |
| `duns` | D\&B directory identifier for the company |
| `companyProfileUrl` | Link to the company's D\&B profile |
| `address` / `city` / `region` / `zipCode` / `country` | Full location |
| `countryRegion` | Combined region string |
| `industryName` | Industry classification |
| `locationType` | `Parent` or branch location |
| `tradeStyleNames` | Trade/DBA names |
| `searchTerm` | The term this record came from |
| `scrapedAt` | Timestamp of extraction |

**Deep profile fields** (only when `scrapeCompanyProfiles` is on):

| Field | Description |
|---|---|
| `revenue` | Formatted revenue, e.g. `$5.63 billion` |
| `revenueValue` | Revenue as a number |
| `revenueCurrency` | Revenue currency (e.g. `USD`) |
| `revenueYear` | Fiscal year of the revenue figure |
| `keyPrincipal` | Lead executive on file |
| `parentIndustryName` | Higher-level industry |
| `registeredDuns` | Registered (numeric) DUNS number |
| `totalPrincipals` | Number of principals on file |
| `competitorsIndustry` | Industry used for competitor matching |
| `similarCompaniesCount` | Count of close industry peers |
| `employees` / `phone` / `incorporatedYear` | Returned when D\&B exposes them publicly (otherwise `null`) |

Not every field is present on every company — D\&B masks some financial and contact detail behind its own paywall, and those fields come back as `null` rather than fabricated data.

#### Input parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `queries` | array | **Yes** | — | Company names or keywords to search, e.g. `software`, `logistics`. |
| `country` | string | No | `US` | Two-letter country code (`US`, `GB`, `DE`, `FR`, `CA`, `AU`, …). |
| `maxItemsPerQuery` | integer | No | `50` | Max companies to collect per term. Paginated automatically. |
| `scrapeCompanyProfiles` | boolean | No | `false` | Visit each company's profile for revenue, key principal, financials, and more. Richer but slower. |
| `proxyConfiguration` | object | No | Apify Unblocker | Apify Proxy settings. Unblocker is required — D\&B blocks direct requests and standard residential/datacenter proxies with a Cloudflare challenge. |

**Quick company list:**

```json
{
  "queries": ["software"],
  "country": "US",
  "maxItemsPerQuery": 200
}
```

**Deep firmographics:**

```json
{
  "queries": ["logistics", "renewable energy"],
  "country": "US",
  "maxItemsPerQuery": 100,
  "scrapeCompanyProfiles": true
}
```

**Search within another country:**

```json
{
  "queries": ["automotive"],
  "country": "DE",
  "maxItemsPerQuery": 150
}
```

#### Output example

```json
{
  "companyName": "Take-Two Interactive Software, Inc.",
  "duns": "2d66458a75c9d054a6e33addf02f1573",
  "registeredDuns": "829681063",
  "companyProfileUrl": "https://www.dnb.com/business-directory/company-profiles/take-two-interactive-software-inc.2d66458a75c9d054a6e33addf02f1573",
  "address": "110 W 44TH St",
  "city": "New York",
  "region": "New York",
  "zipCode": "10036-4011",
  "country": "United States",
  "industryName": "Computer Systems Design and Related Services",
  "locationType": "Parent",
  "revenue": "$6.66 B",
  "revenueValue": 6656400000,
  "revenueCurrency": "USD",
  "revenueYear": "2026",
  "keyPrincipal": "Strauss Zelnick",
  "parentIndustryName": "Professional, Scientific, and Technical Services",
  "totalPrincipals": "4",
  "competitorsIndustry": "Computer Systems Design and Related Services",
  "similarCompaniesCount": 4,
  "searchTerm": "software",
  "scrapedAt": "2026-09-05T11:16:09.000Z"
}
```

Download results in **JSON, CSV, Excel, HTML, or XML** directly from the Apify Console, or pull them via the [Dataset API](https://docs.apify.com/api/v2) / [Apify SDK](https://docs.apify.com/sdk).

#### How to use the Dun & Bradstreet Scraper

1. Open the Dun & Bradstreet Scraper on the Apify Store, or call it via the API below.
2. Enter one or more company names or keywords, pick a country, and set how many results you need per term.
3. Turn on **Scrape company profiles** if you need revenue and key-principal data.
4. Run the Actor and download the dataset as JSON, CSV, or Excel — or read it straight from your own code.

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("parsebird/dnb-scraper").call(run_input={
    "queries": ["software"],
    "country": "US",
    "maxItemsPerQuery": 200,
    "scrapeCompanyProfiles": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["companyName"], item["duns"], item.get("revenue"))
```

**JavaScript (Node.js):**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('parsebird/dnb-scraper').call({
    queries: ['software'],
    country: 'US',
    maxItemsPerQuery: 200,
    scrapeCompanyProfiles: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Use cases

- **Sales lead generation** — build a targeted prospect list by industry keyword and country, complete with address and revenue band
- **KYC and vendor due diligence** — verify a company's registered name, DUNS number, and industry classification before onboarding
- **Market research** — size an industry by pulling every company matching a keyword in a given country
- **Competitive intelligence** — pull similar-company counts and key principals for a set of competitors
- **Data enrichment** — append DUNS numbers and firmographic data to an existing company list

#### How it works

1. Sends each search term to D\&B's Business Directory search API, filtered by your chosen country.
2. Paginates automatically (25 results per page) until your requested `maxItemsPerQuery` is reached or D\&B has no more matches.
3. Deduplicates results by DUNS number as it paginates.
4. If **Scrape company profiles** is on, visits each company's public D\&B profile page and extracts revenue, key principal, register number, employee count, and more.
5. Pushes one row per company to the dataset.

#### How much does it cost to scrape D\&B's Business Directory?

This Actor uses [Pay-Per-Event pricing](https://docs.apify.com/platform/actors/publishing/monetize#pay-per-event-pricing-model) — you pay per company row returned, not per API call or compute unit.

| Event | Price per event | Price per 1,000 companies |
|---|---|---|
| `company-scraped` | $0.00149 | **$1.49** |

A `company-scraped` event fires once per company pushed to the dataset, whether it's a basic search result or a fully enriched profile. Scraping 1,000 companies costs about $1.49 either way — enrichment adds runtime, not price per row. Apify's free monthly platform usage credits apply to this Actor like any other.

#### FAQ

**Why do some fields come back `null`?**
D\&B masks certain financial and contact fields (like `incorporatedYear` or a second principal's name) behind its own paywall. This Actor only returns what D\&B actually exposes publicly — it never fabricates masked values.

**Does `scrapeCompanyProfiles` cost more per row?**
No — the price per company is the same either way. Turning it on just makes each run slower, since it adds one extra request per company.

**Why is US coverage better than other countries?**
D\&B's own data is deepest for the US market. Other countries reliably return company name, address, and industry, but revenue and principal data is sparser outside the US.

**Can I search for an exact company name instead of a keyword?**
Yes — `queries` accepts anything you'd type into D\&B's own search box, from a broad industry keyword to a specific company name.

**Can I schedule this to run automatically?**
Yes — use [Apify Schedules](https://docs.apify.com/platform/schedules) to re-run a set of queries daily, weekly, or on any interval, and pair it with [webhooks](https://docs.apify.com/platform/integrations/webhooks) or the [Google Sheets](https://docs.apify.com/platform/integrations/google-sheets), [Slack](https://docs.apify.com/platform/integrations/slack), [Zapier](https://docs.apify.com/platform/integrations/zapier), or [Make](https://docs.apify.com/platform/integrations/make) integrations to route the results.

**Can I access this via API?**
Yes — every Actor on Apify has a full [REST API](https://docs.apify.com/api/v2), plus native clients for [Python](https://docs.apify.com/api/client/python) and [JavaScript](https://docs.apify.com/api/client/js). See the code samples above.

**Found a search term or country this Actor handles poorly?**
Open an issue on the [Issues tab](https://apify.com/parsebird/dnb-scraper/issues) — reports on specific queries help improve coverage.

#### Is it legal to scrape Dun & Bradstreet's Business Directory?

Yes. This Actor only reads company information that D\&B has already published on its public Business Directory pages — the same data any visitor can see without logging in. That said, always respect D\&B's terms of service and applicable data-protection law for how you subsequently use any personal data, such as a key principal's name. See Apify's [blog post on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) for a broader overview.

#### Related Actors

- [Impressum & EU Legal Notice Scraper](https://apify.com/parsebird/impressum-legal-notice-scraper) — company legal-notice data (address, VAT ID, director) straight from any domain
- [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) — general-purpose contact-detail extraction for any website
- [Zefix.ch Scraper](https://apify.com/parsebird/zefix-ch-scraper) — search the Swiss commercial register by name, canton, or legal form
- [FirmenABC.at Scraper](https://apify.com/parsebird/firmenabc-at-scraper) — Austrian company registry data
- [UK Companies House Scraper](https://apify.com/parsebird/uk-companies-house-scraper) — official UK company registration records
- [Pappers.fr Company Scraper](https://apify.com/parsebird/pappers-scraper) — French company registry data
- [Northdata Scraper](https://apify.com/parsebird/northdata-scraper) — cross-border company and ownership data

# Actor input Schema

## `queries` (type: `array`):

Company names or keywords to search, e.g. "software", "logistics".

## `country` (type: `string`):

Two-letter country code to search within (US, GB, DE, FR, CA, AU, ...). US has the deepest, most complete data.

## `maxItemsPerQuery` (type: `integer`):

Maximum number of companies to collect per search term. Paginated automatically, 25 per page.

## `scrapeCompanyProfiles` (type: `boolean`):

Visit each company's D\&B profile for revenue, key principal, financials, and more. Richer but slower — one extra request per company.

## `proxyConfiguration` (type: `object`):

D\&B's business directory blocks direct requests with a Cloudflare challenge. The Apify Unblocker is required and used by default — changing this will likely break the run.

## Actor input object example

```json
{
  "queries": [
    "software"
  ],
  "country": "US",
  "maxItemsPerQuery": 50,
  "scrapeCompanyProfiles": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "software"
    ],
    "country": "US",
    "maxItemsPerQuery": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/dnb-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["software"],
    "country": "US",
    "maxItemsPerQuery": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/dnb-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "software"
  ],
  "country": "US",
  "maxItemsPerQuery": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}' |
apify call parsebird/dnb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/dnb-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/uoTfVZmf60CINUo5h/builds/In0JOEL3E6BcgUfpG/openapi.json
