USSB Directory Business Listings Scraper avatar

USSB Directory Business Listings Scraper

Pricing

from $1.44 / 1,000 item extracteds

Go to Apify Store
USSB Directory Business Listings Scraper

USSB Directory Business Listings Scraper

Search and export public USSB Directory business listings, unique result counts, contact details, classifications, and profile URLs.

Pricing

from $1.44 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Search and export USSB Directory businesses as clean, structured records for small-business prospecting, directory analysis, enrichment, and recurring list refreshes.

The Actor reads the public USSB Directory listing pages, reports the source's unique result count, follows pagination, and optionally opens each business profile for classifications, descriptions, addresses, phone numbers, public emails, websites, and contact names.

Use a business-name query, an industry, a US state or territory, a supplied /listings URL, or an individual /listing/... profile URL.

What can this USSB Directory scraper do?

  • Search the public directory by partial business name.
  • Filter by one top-level industry classification.
  • Filter by US state, District of Columbia, or Puerto Rico.
  • Accept existing filtered USSB Directory search URLs.
  • Extract a single public business profile by URL.
  • Traverse result pages until the requested limit is reached.
  • Deduplicate records by canonical listing URL.
  • Report the source-displayed totalAvailable result count.
  • Export lightweight listing cards without opening profiles.
  • Enrich cards with all supported public profile fields.
  • Decode public email addresses protected by Cloudflare's page markup.
  • Retry transient blocks and timeouts with bounded fresh proxy sessions.
  • Save one normalized business per default-dataset row.

The Actor does not log in, bypass private records, or infer contact data that USSB does not display.

Who is it for?

Sales and lead-generation teams

Build a regional or industry-specific list of public small businesses, then send the dataset to a CRM or enrichment workflow.

Market researchers

Measure directory coverage by state or industry, inspect classifications, and compare scheduled dataset snapshots.

Agencies

Refresh public local-business prospect lists without maintaining a custom Drupal scraper and proxy retry layer.

Data engineers

Use stable JSON fields and canonical URLs in ETL, data-quality, spreadsheet, and warehouse pipelines.

Business owners

Verify how a company profile is represented in the public USSB Directory.

Why use this Actor?

USSB Directory currently exposes hundreds of thousands of listing cards and detailed public profiles. Direct server requests can receive a Cloudflare challenge even though the records are public.

This Actor provides:

  • a tested HTTP-first route through Apify Proxy;
  • source-specific selectors for Drupal listing cards and profiles;
  • server-side filters plus record-level filter verification;
  • stable deduplication and typed output;
  • bounded retries instead of endless challenge loops;
  • cheaper card-only exports when details are unnecessary;
  • spreadsheet-ready JSON, CSV, Excel, XML, and RSS exports through Apify datasets.

It uses 256 MB of memory and does not launch a browser for ordinary runs.

What data is extracted?

FieldDescription
listingIdStable node ID or listing slug
namePublic business name
listingUrlCanonical USSB Directory profile URL
stateState or territory shown by USSB
cityCity shown by USSB
yearEstablishedDisplayed establishment year
imageUrlListing image or source placeholder URL
totalAvailableTotal records reported for the current search
resultPositionOne-based position in traversed results
summaryShort public profile summary
industriesTop-level industry labels
classificationsDetailed linked classifications
descriptionFull public business description
specialDetailsServices or special details shown on the profile
incorporatedInDisplayed incorporation state
branchTypeMain or branch designation
addressPublic street address
zipCodePublic postal code
phonePublic business phone
emailPublic business email when displayed
websitePublic business website
contactPersonPublic contact person or role
detailsIncludedWhether the profile page was opened
scrapedAtISO 8601 extraction timestamp

Profile-only fields are null or empty arrays when includeDetails is disabled or when the source does not provide them.

How to get started

  1. Open the Actor input page.
  2. Leave USSB Directory URLs empty for a directory search.
  3. Optionally enter a business name, state, or industry.
  4. Keep Include business details enabled for contact and profile fields.
  5. Set Maximum listings to the number of records you need.
  6. Keep Apify Proxy enabled.
  7. Click Start.
  8. Open the Business listings dataset view.
  9. Export the results as JSON, CSV, Excel, XML, or RSS.

For a fast source count and card export, disable includeDetails. Every saved row includes the source-reported search total.

Input parameters

startUrls

Optional array of public USSB Directory URLs.

Supported paths:

  • https://www.ussbdirectory.com/listings
  • filtered /listings?... URLs
  • https://www.ussbdirectory.com/listing/<slug>

Other hosts and paths fail validation instead of being fetched.

businessName

Optional case-insensitive partial business-name filter, from 1 to 128 characters.

Example: Solar.

industryClassification

Optional top-level USSB industry classification selected from the input dropdown.

Example: Professional, Scientific, and Technical Services.

state

Optional state or territory selected from the input dropdown.

Example: Texas.

includeDetails

Defaults to true.

  • true: open every accepted profile and extract detail/contact fields.
  • false: export listing cards and totals without profile requests.

maxItems

Maximum unique records to save.

  • Default: 50
  • Minimum: 1
  • Maximum: 10000

maxConcurrency

Maximum simultaneous detail requests.

  • Default: 5
  • Minimum: 1
  • Maximum: 20

Use a lower value if the source becomes unstable.

proxyConfiguration

Apify Proxy is enabled by default because direct requests can be challenged. The tested default datacenter pool works for ordinary extraction.

You can explicitly select a US residential group when your account supports it. The Actor never silently switches to residential traffic, so expensive fallback behavior remains under your control.

Example input: find solar businesses

{
"businessName": "Solar",
"includeDetails": true,
"maxItems": 10,
"proxyConfiguration": {
"useApifyProxy": true
}
}

A current local verification returned 10 enriched rows from 379 source-reported matches.

Example input: export Texas prospects

{
"state": "Texas",
"includeDetails": true,
"maxItems": 25,
"maxConcurrency": 5,
"proxyConfiguration": {
"useApifyProxy": true
}
}

A current local verification returned 25 Texas profiles with public contact data and a source-reported total of 29,263 matches.

Example output

{
"listingId": "331114",
"name": "Switch to Solar",
"listingUrl": "https://www.ussbdirectory.com/listing/switch-solar",
"state": "Utah",
"city": "Midvale",
"yearEstablished": 2026,
"totalAvailable": 379,
"resultPosition": 1,
"summary": "Switch to Solar helps homeowners and businesses explore reliable renewable energy solutions.",
"industries": [
"Professional, Scientific, and Technical Services"
],
"classifications": [
"Electrical Contractors and Other Wiring Installation Contractors"
],
"address": "6975 Union Park Avenue",
"zipCode": "84047",
"phone": "2027346631",
"email": null,
"website": "https://switchtosolar.net/",
"contactPerson": "Switch to Solar",
"detailsIncluded": true,
"scrapedAt": "2026-09-01T12:00:00.000Z"
}

The exact fields depend on what a listing publicly displays. Do not assume every business has an email, website, address, contact person, or establishment year.

How much does it cost to extract USSB Directory businesses?

This Actor uses pay per event:

  • $0.005 one-time start fee per run.
  • One item event for each unique business record saved.
  • Failed, duplicate, or filtered-out records are not item events.
  • Profile details do not create a separate charge event.

The item price decreases by Apify pricing tier:

TierPrice per saved business
FREE$0.002760
BRONZE$0.002400
SILVER$0.001872
GOLD$0.001440
PLATINUM$0.000960
DIAMOND$0.000672

Examples on the FREE tier:

  • 1 business: about $0.00776.
  • 10 businesses: about $0.03260.
  • 100 businesses: about $0.28100.

Examples on the BRONZE tier:

  • 10 businesses: about $0.02900.
  • 100 businesses: about $0.24500.
  • 1,000 businesses: about $2.40500.

Your active Apify tier determines the item price. An optional residential proxy configuration can add platform proxy usage to the run under Apify's platform billing rules.

Export and integration workflows

Spreadsheet prospecting

Run a state or industry filter, open the dataset, and export Excel or CSV. Use listingId or listingUrl as the durable deduplication key.

CRM enrichment

Send name, address, phone, email, website, classification, and source URL into HubSpot, Salesforce, Airtable, or another CRM through Make, Zapier, n8n, or a webhook step.

Recurring list refreshes

Create a scheduled Apify Task with the same input. Compare datasets downstream by listingId to detect additions, removals, or changed public fields.

The Actor produces current snapshots. It does not itself keep history, send alerts, or label changes.

Directory coverage analysis

Disable details, request a small sample, and use totalAvailable to record the source's current search count. Increase maxItems when you need the actual rows.

Targeted profile lookup

Supply one or more /listing/<slug> URLs to normalize known profiles without traversing search pages.

Run through the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~ussb-directory-business-listings/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"state": "Texas",
"includeDetails": true,
"maxItems": 25,
"proxyConfiguration": { "useApifyProxy": true }
}'

For production code, prefer the Authorization: Bearer header so tokens do not appear in URLs or request logs.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/ussb-directory-business-listings').call({
businessName: 'Solar',
includeDetails: true,
maxItems: 10,
proxyConfiguration: { useApifyProxy: true },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/ussb-directory-business-listings').call(
run_input={
'industryClassification': 'Construction',
'includeDetails': True,
'maxItems': 50,
'proxyConfiguration': {'useApifyProxy': True},
}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI agents

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/ussb-directory-business-listings"

Claude Desktop setup

Add this MCP server JSON to Claude Desktop's configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/ussb-directory-business-listings"
}
}
}

Cursor setup

Add the same mcpServers.apify entry to your Cursor MCP configuration, then reload Cursor.

VS Code setup

Add the same HTTP MCP URL to your VS Code MCP server settings and start the apify server.

After setup, try these example prompts with the Apify MCP server:

  • “Use the USSB Directory Actor to find 20 solar businesses and return name, state, website, and profile URL.”
  • “Run the USSB Directory Actor through MCP and export 50 Texas businesses with public contact details.”
  • “Use MCP to extract this USSB listing URL and summarize its classifications and contact fields.”

An agent should still review source terms, privacy obligations, and outreach rules before using contact data.

Reliability, limits, and failure behavior

  • USSB Directory is an independent website and can change markup without notice.
  • Direct requests may receive Cloudflare challenges; keep Apify Proxy enabled.
  • Each request is retried at most three times.
  • Retry attempts use a fresh proxy identity after a challenge, timeout, or transient response.
  • Stable invalid URLs, unsupported hosts, and unsupported paths fail without blind retries.
  • Search totals are source-reported snapshots, not a completeness guarantee.
  • USSB filter pages can contain stale cards; the Actor verifies filters against parsed records.
  • A high maxItems value can require many source requests and a longer run.
  • Lower maxConcurrency if the source begins timing out.
  • Card-only runs are faster because they skip profile pages.
  • Explicit profile URLs have no directory search total, so totalAvailable is null.
  • Naturally missing profile fields remain null or empty arrays.

The Actor fails with a non-zero status when the source returns an unrecognized challenge or page shape after bounded retries. It does not turn unexpected empty pages into successful zero-row runs.

Responsible use and legality

This Actor accesses public USSB Directory pages without credentials.

You are responsible for:

  • reviewing USSB Directory's current terms and policies;
  • collecting only data you have a lawful purpose to use;
  • respecting applicable privacy, marketing, telemarketing, and anti-spam laws;
  • honoring opt-outs and suppression lists;
  • limiting retention to what your workflow needs;
  • securing exported contact data;
  • avoiding harassment, discrimination, or automated high-risk decisions;
  • not using the Actor to train AI models where the source reserves that use.

Public availability does not remove legal or contractual obligations. This documentation is operational guidance, not legal advice.

Troubleshooting

The run receives Cloudflare challenges

Keep proxyConfiguration.useApifyProxy enabled. Retry later or select an authorized US residential proxy group if your Apify account supports it. Do not disable retries or raise concurrency first.

I received fewer rows than the source total

totalAvailable is the number reported by the source for the search. maxItems controls how many rows the Actor saves. Filters are verified again after profile parsing, so stale or mismatched source cards can be excluded.

Some contact fields are empty

USSB profiles vary. Disable assumptions that every business has a phone, email, website, street address, or named contact. Empty fields are not extraction errors when the source omits them.

My start URL was rejected

Only ussbdirectory.com/listings and ussbdirectory.com/listing/<slug> paths are supported. Remove unrelated domains, account pages, and malformed URLs.

A large run times out

Increase the Actor timeout at the Task level, reduce maxConcurrency, or split the work into state or industry runs. Keep each input deterministic so datasets can be deduplicated later.

FAQ

Does the Actor provide the total unique record count?

It exports the source-reported search total as totalAvailable on every discovered row. The unfiltered directory reported 330,957 records during implementation verification. The count changes as USSB updates its directory.

Can it export Excel?

Yes. Run results live in an Apify dataset, which supports Excel, CSV, JSON, XML, and RSS export.

Does it scrape listing cards and full profiles?

Yes. Set includeDetails to false for listing cards, or keep it true for profile enrichment.

Does it monitor changes?

It produces current snapshots. Schedule repeat runs and compare datasets downstream by listingId; built-in history and alerts are not included.

Does it require a login?

No. It processes public directory pages only.

Are emails guaranteed?

No. The Actor decodes an email when the public profile includes one. Missing emails remain null.

Can I search multiple states in one run?

The structured state field accepts one state or territory. Use separate Tasks or supply distinct filtered listing URLs for independent scopes.

Can I use my own proxy URLs?

Yes, through the standard Apify proxyConfiguration object. Reliability and platform cost depend on that proxy service.

Choose this Actor when USSB Directory is the required source. Choose a related Actor only when its source and buyer workflow match your project.

Support

If a page layout changes or a valid USSB URL fails after retries, include:

  • the Actor run URL;
  • a redacted copy of the input;
  • the affected public listing or search URL;
  • the expected field or record count;
  • the log line showing the first failure.

Do not include Apify tokens, private CRM data, or unrelated personal information.