Cosmetology & Salon License Leads Scraper icon

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 rotationcurl-cffi impersonates 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 activeOnly is 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.

FieldTypeRequiredWhat 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

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0040Per 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 null rather than fabricate.
  • Status filtering varies by state. The TX dataset doesn't expose a status column, so activeOnly has 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_at field tells you when we fetched; the underlying source may lag actual license changes.

FAQ

Is there a national cosmetology license database I can query?
No unified federal registry exists. Cosmetology and barber licensing is administered state by state. This Actor consolidates four of the most accessible state registries into one output schema.
Can I get just salons / establishments, not individual stylists?
For NY, the dataset is salon and barber *businesses* only — every row is an establishment. For TX, the registry includes both establishment license types (Full Service, Mini, Mobile, Manicurist, etc.) and individual operators; filter by license_type after export. CT and CO are predominantly individual licensees.
How do I build a salon owner email list?
These state registries don't publish email. Use this Actor to get the salon/owner name plus location, then enrich through Clay, Apollo, or a similar tool after export.
Why are some fields null?
Not every state publishes every field. TX has no street/city/ZIP; CO has no street address; only NY and CT carry status-bearing addresses. We return null rather than guess. The source_url field tells you which registry each record came from.
How many records are in each state?
Approximate matched counts at time of writing: NY ~32 000 salon/barber businesses, CT ~80 000 beauty credentials, CO ~135 000 cosmetology/barber/manicurist licenses, TX ~430 000 cosmetology/barber records. Counts change as licenses are issued and expire.
Can I schedule this to run weekly?
Yes — use Apify Schedules to trigger a run on a cadence. The scraped_at field and the license_number make deduplication straightforward for delta workflows.
Does this scrape anything I shouldn't be using?
All data comes from official state government open-data portals published for public access. No login, no scraping private pages, no personal data beyond what the state publishes in the licensing registry.

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

Teams that run this also run