# US Business Lookup & Company Data: Lead Enrichment Dossier (`stromation/company-dossier`) Actor

Look up any US business by name + city or website. Get a sourced dossier: address, phone, category, domain age, email setup, SSL, website score, tech stack, SEC status. $0.05 per business found. Not found = free.

- **URL**: https://apify.com/stromation/company-dossier.md
- **Developed by:** [Stromation LLC](https://apify.com/stromation) (community)
- **Categories:** Lead generation, Business, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 company dossiers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## US Business Lookup and Company Data: Lead Enrichment Dossier

Type a US business's **name and city**, or just its **website**, and get back **one dossier**: who the business is, where it is, its main phone, how old its domain is, whether its email is set up properly, whether its website is healthy and what it is built on. **Every fact carries its source, the date it was checked and a confidence score. Facts that could not be found say "not found" instead of being guessed.** Business facts only: no personal names, personal emails or personal phone numbers.

Try it: press **Try for free** on this page. The prefilled input runs two real lookups.

### What you get for $0.05

**$0.05 per business that is found. A business that cannot be found, and a bad input, cost nothing.** One dossier includes:

| Section | Contents |
|---|---|
| **Identity** | Matched business (Overture Maps Places), category, address, business main phone, website, social pages. Match confidence, plus runner-up candidates when the match is ambiguous. |
| **Hours** | Opening hours, only when the business publishes them on its own site in structured form. Otherwise "not found". |
| **Domain and email trust** | Domain age (public registry record), mail setup (MX, SPF, DMARC, DKIM hints), SSL certificate days left, whether the business name appears on its own site, a trust score with warnings. |
| **Website** | Health score (0 to 100) with the top issues and how to fix them, technology stack (site builder or CMS, ecommerce, analytics, marketing tools, hosting) with the evidence for each. |
| **Registry** | SEC registration for US public companies (US government data). Most small businesses are correctly "not found". |
| **Conflicts** | Where the places data and the business's own website disagree (phone, name, postcode). A conflict lowers confidence. |
| **Summary** | One plain-English summary built from the facts above. |

This is not a Google Maps scraper and does not use Google, search-engine results or review sites. It combines open places data with live checks of the business's own domain and website.

### Use cases

**Sales lead enrichment.** You have a list of company names and cities, or just websites. Add address, main phone, category, tech stack and a website score to each row. A site with a low score, no SPF or DMARC record, or no analytics is a concrete opening line for web, email or marketing services.

**Vendor and supplier checks.** Before you pay a new vendor, check that the business shows up at the address it gave, that its domain has existed for years rather than days, that its email is set up properly, and whether the places data and its own website agree. Conflicts and warnings are listed in the output. This is a quick public-data check, not a legal registry search.

**CRM cleanup.** Re-check old records in bulk (up to 200 per run): fill in missing addresses and phones, confirm the website still works, and flag records where the data disagrees. Every value carries a source and a date, so you know how fresh it is.

### Input

```json
{
  "businesses": [
    { "name": "Joe's Pizza", "place": "New York, NY" },
    { "website": "pikeplacechowder.com" }
  ]
}
```

Each business needs a **website**, or a **name plus a city and state** (or ZIP). Up to 200 businesses per run. US businesses. You can also use the single fields `name`, `place` and `website` instead of the list.

### Output example (real run, shortened)

Input: `{ "name": "Franklin Barbecue", "place": "Austin, TX", "website": "franklinbarbecue.com" }`, run on 28 October 2026.

```json
{
  "status": "found",
  "identity": {
    "status": "matched",
    "match_confidence": 0.9,
    "name": { "value": "Franklin Barbecue", "source": "Overture Maps Places 2026-10-21.0", "confidence": 0.9 },
    "category": { "value": "restaurant", "note": "Overture category: barbecue_restaurant" },
    "address": { "value": "900 E 11th St, Austin, TX 78702", "source": "Overture Maps Places 2026-10-21.0" },
    "phone": { "value": "+15126531187", "note": "business main number" }
  },
  "domain": {
    "trust_score": 74,
    "trust_level": "plausible",
    "age_years": { "value": 17, "source": "public registry record (RDAP, rdap.verisign.com)", "note": "registered 2009-10-20T19:51:59Z" },
    "email": { "mx": ["smtp.secureserver.net", "mailstore1.secureserver.net"], "spf": { "present": false }, "dmarc": { "present": false } },
    "certificate": { "value": { "days_left": 38, "https": true } },
    "warnings": ["No SPF record: anyone can forge email from this domain.", "No DMARC record."]
  },
  "website": {
    "health": { "value": { "score": 91, "grade": "A", "top_issues": [
      { "severity": "low", "found": "A phone number is shown but it is not tap-to-call.", "fix": "Wrap the number in a tel: link." }
    ] } },
    "tech_stack": { "value": [
      { "name": "Squarespace", "category": "builder" },
      { "name": "Meta Pixel", "category": "analytics" },
      { "name": "Toast", "category": "ecommerce" }
    ] }
  },
  "registry": { "us_sec": { "status": "not_found", "note": "not a company listed with the SEC (most small businesses are not)" } },
  "conflicts": [],
  "summary": "Franklin Barbecue is a restaurant at 900 E 11th St, Austin, TX 78702 (match confidence 0.9). Its domain franklinbarbecue.com is 17 years old; email is set up (no SPF, DMARC none). The website scores 91/100 and ..."
}
```

The real output has more fields: every value also has `status`, `fetched_at` and `confidence`, and the `sources` list names each data source and licence. (The example is shortened: the top issues list is cut to one item.) The results table in the Apify console shows status, business, address, phone, domain age and website score. The dataset downloads as JSON, CSV or Excel.

### FAQ

**What does "not found" cost?** Nothing. You are charged $0.05 only when a dossier is actually produced. Businesses that cannot be found and invalid inputs are returned as free rows.

**What if the business is not in the places data?** If you gave a website, the dossier is built from the website alone (domain and website checks) and says so ("website_only"). If you gave only a name and city and nothing matches, the row is "not found" and free.

**Which data sources does it use?** Overture Maps Places (open data) cross-checked against each business's own website; public domain registry records (RDAP); public DNS; live checks of the business's own site (robots.txt respected); and SEC company tickers (US government data). No search-engine results, no scraped review or social platforms.

**Attribution.** Places data comes from Overture Maps. Its source datasets are released under CDLA-Permissive-2.0, Apache-2.0 (Foursquare) and CC0 (AllThePlaces), and attribution is required: if you reuse the places data, credit Overture Maps Foundation and its contributors, see https://docs.overturemaps.org/attribution/. Each dossier lists its sources and licences in the `sources` field.

**Does it return personal data?** No. It returns business main phone numbers and business facts only, never personal names, personal emails or personal phone numbers.

**Which countries?** US businesses.

**Is the data always right?** No data set is. That is why each value has a source, a date and a confidence score, and why disagreements between sources are listed as conflicts. Technology detection is best effort: a tool that is not listed may still be in use.

**Does it check state business registries (LLC status, officers)?** Not at the moment. Only SEC registration is included, and the output says so.

**Can I call it from code or an AI agent?** Yes, through the Apify API, the Apify client libraries or any Apify integration. Each result is structured JSON.

### Limits

US businesses only. Up to 200 per run. Pages that need a login or block automated access cannot be read. Opening hours appear only when the business publishes them in structured form on its own site. Technology detection is best effort.

### More from the same author

- **Bulk Website Audit** (stromation/bulk-website-audit): audit a list of domains for SSL, SPF/DMARC, tech stack, AI-search readiness and mobile basics, $0.006 per site.
- **No-Website Local Leads** (stromation/weak-website-local-leads): pick a business type and a US city, get local businesses with no or weak websites.

# Actor input Schema

## `businesses` (type: `array`):

A list of businesses to look up (up to 200). Each item needs a website, or a name together with a place (city and state, or ZIP).

## `name` (type: `string`):

Optional: use instead of the list for one business.

## `place` (type: `string`):

For example: Austin, TX

## `website` (type: `string`):

For example: example.com

## Actor input object example

```json
{
  "businesses": [
    {
      "name": "Franklin Barbecue",
      "place": "Austin, TX",
      "website": "franklinbarbecue.com"
    }
  ]
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (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 = {
    "businesses": [
        {
            "name": "Joe's Pizza",
            "place": "New York, NY"
        },
        {
            "website": "pikeplacechowder.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("stromation/company-dossier").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 = { "businesses": [
        {
            "name": "Joe's Pizza",
            "place": "New York, NY",
        },
        { "website": "pikeplacechowder.com" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("stromation/company-dossier").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 '{
  "businesses": [
    {
      "name": "Joe'\''s Pizza",
      "place": "New York, NY"
    },
    {
      "website": "pikeplacechowder.com"
    }
  ]
}' |
apify call stromation/company-dossier --silent --output-dataset

```

## MCP server setup

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

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/7dwcZbmCaqVOItgMO/builds/kx8Zhcz39H6hYPlr5/openapi.json
