Lead generation
Cosmetology & Salon License Leads Scraper
Scrape licensed cosmetology, barber, salon, and nail establishments across 4 US states (NY, CT, CO, TX) via official state open-data APIs. Get salon name, owner/licensee name, license number, type, status, address, and city — clean B2B leads, ready to export.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Every US state licenses cosmetologists, barbers, nail techs, estheticians, and the salons they work in — and four of those states publish their registries as machine-readable open-data APIs: New York, Connecticut, Colorado, and Texas. This Actor queries each selected state's official Socrata SODA endpoint, narrows it to the beauty-industry credentials, paginates through every record, normalises the columns into a single consistent schema, and delivers one clean dataset row per license.
Each state buries cosmetology licenses inside a giant multi-profession registry, applies its own column names, and returns data in a different shape. We handle every bit of that per-state plumbing for you — you get uniform output no matter which states you pick.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so state API gateways see a genuine browser, not a Python script. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block or rate-limit response.
- 🔁 Retries with exponential backoff on
408 / 429 / 503— up to 5 attempts per page. - 🎯 Server-side beauty-credential filtering — each state's registry holds dozens of professions; we filter to cosmetology / barber / salon / nail credentials at the source, so you never wade through (or pay for) dentists and electricians.
- 🧱 Per-state active-only filtering — NY, CT, and CO support status filters; we apply them automatically when
activeOnlyis enabled, so you get live licenses without post-processing. - 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge (beyond the small warm-up fee).
Use cases
- Salon software (booking / POS) sales — pull every licensed salon establishment in New York with name and address, then enrich with email via Clay or Apollo for a targeted outreach sequence. These owner-operated shops are exactly the ones ZoomInfo misses.
- Beauty-product wholesalers & distributors — build state-level prospect lists of salons, barbershops, and nail studios in minutes instead of buying stale lists.
- Salon & beauty-professional insurance — commercial insurers targeting cosmetologists and shop owners need addressable prospect lists at scale.
- Payment processors & lenders — owner-operated salons are a classic underwriting target; license status and type help you pre-qualify.
- Market research — compare beauty-industry supply across states, credential mix (cosmetologist vs. barber vs. nail tech), or salon density by city.
- Staffing & recruiting — find newly licensed individual operators by state for placement into salons and chains.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
states | array | no | US state codes to scrape. Each maps to that state's official Socrata cosmetology / barber / salon licensing registry. Supported: NY, CT, CO, TX. |
activeOnly | boolean | no | When enabled, applies a status filter to return only currently active/licensed records. Supported for NY, CT, and CO; the TX dataset does not expose a status column, so all TX records are returned. |
maxResults | integer | no | Maximum total number of license records to return across all selected states. |
{
"states": [
"NY",
"TX"
],
"activeOnly": true,
"maxResults": 500,
"proxyConfiguration": {
"useApifyProxy": false
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
statebusiness_namelicensee_namelicense_numberlicense_typestatusaddresscitycountyzipphonesource_urlscraped_at
{
"state": "NY",
"business_name": "ETTA SALON",
"licensee_name": "Grunau Rachel",
"license_number": "AEB-18-01243",
"license_type": "DOSAEBUSINESS",
"status": "Active",
"address": "555 Gates Ave",
"city": "Brooklyn",
"county": null,
"zip": "11221",
"phone": null,
"source_url": "https://data.ny.gov/resource/y3u4-jbgh.json",
"scraped_at": "2026-06-07T09:00:00+00:00"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0040 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Four states only. NY, CT, CO, and TX are currently supported. Other states publish their boards' registries behind HTML form portals or PDFs; adding each requires custom integration work (and is on the roadmap).
- Field coverage varies by state. NY and CT include street address; CO gives city + ZIP but no street; TX gives county but no street/city/ZIP. We surface
nullrather than fabricate. - Status filtering varies by state. The TX dataset doesn't expose a status column, so
activeOnlyhas no effect there — all matching records are returned. - Email is not in these registries. None of the four state datasets publish operator email. Enrich the
business_name/licensee_name+ location output through a tool like Clay or Apollo after export. - Data freshness depends on the state. Each portal refreshes on its own schedule — typically daily to weekly. The
scraped_atfield tells you when we fetched; the underlying source may lag actual license changes.
FAQ
Is there a national cosmetology license database I can query?
Can I get just salons / establishments, not individual stylists?
license_type after export. CT and CO are predominantly individual licensees.How do I build a salon owner email list?
Why are some fields null?
null rather than guess. The source_url field tells you which registry each record came from.How many records are in each state?
Can I schedule this to run weekly?
scraped_at field and the license_number make deduplication straightforward for delta workflows.Does this scrape anything I shouldn't be using?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors