← Health board

HdL Municipal Business License Lookup

Search municipal business-license records for HdL Companies cities (Pomona, Hayward, El Cajon & more) by name or address -- account #, issue/expiry dates, address.

100%golden-diff pass
Run it on Apify verified nightly

Verification

100%golden-diff success
360canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
jurisdictionstring|null
account_numberstring|null
business_namestring|null
issue_datestring|null
expiration_datestring|null
addressstring|null
citystring|null
statestring|null
zip_codestring|null
matched_bystring|null
source_urlstring|null
scraped_atstring|null

Sample row

{
  "jurisdiction": "Pomona",
  "account_number": "00204231",
  "business_name": "BEE POLISHED NAILS SPA",
  "issue_date": "4/24/2019",
  "expiration_date": "3/31/2027",
  "address": "663 E FOOTHILL BLVD",
  "city": "POMONA",
  "state": "CA",
  "zip_code": "91767",
  "matched_by": "Business Name",
  "source_url": "https://pomona.hdlgov.com/Search/SearchBy"
}

Inputs

FieldTypeReqDefaultDescription
citySubdomain string no "pomona" The HdL Companies city subdomain to search, e.g. 'pomona' for pomona.hdlgov.com. Confirmed reachable: pomona, hayward, elcajon. Many other hdlgov.com cities share the same search schema; some sit behind a Cloudflare challenge and can't be reached with a plain HTTP request -- pick one of those and the run returns a single free row naming the block and a reachable city instead of failing.
query string no "Nail" A business name (or address) fragment to search for, e.g. 'Nail' or '123 Foothill'. Matches are partial/substring, not exact.
queries array no ["Nail"] Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'Search query'. Combined with 'Search query' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted.
searchType string no "Business Name" Search the business name index or the business address index.
maxResults integer no 200 Cap on the number of records returned PER ENTRY, not per run — so a batch cannot silently return only the first 200 rows overall and read as 'the rest don't exist'. A broad query (e.g. a single letter) can match thousands of licenses -- narrow the query rather than raising this for routine lookups.
proxyConfiguration object no {"useApifyProxy":false} Optional. HdL city portals are usually reachable directly; enable a proxy only if a run is blocked from a datacenter IP. Does not help against a Cloudflare-challenged city -- pick a different citySubdomain instead.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 100 business-license records at $0.004/result ≈ $0.40.

FAQ

Where does the data come from?

Each city's own public HdL Companies business-license search portal (e.g. pomona.hdlgov.com) -- the same system dozens of California municipalities use.

Which cities are supported?

Any hdlgov.com city can be searched via the citySubdomain input. Pomona, Hayward, and El Cajon are confirmed reachable directly; some other HdL cities sit behind a Cloudflare challenge; pick one of those and the run succeeds with a single free row naming the block and suggesting a reachable city, so you are never charged for it.

What can I search by?

A business name or a street address fragment (partial/substring match, e.g. 'Nail' or '123 Foothill').

How am I charged?

Pay-per-result -- per business-license record returned. No charge for searches with no matches.

Is this personal data?

No -- it's public commercial/DBA business-license data (business name, account #, dates, business address), not consumer PII.

How current is it?

It reflects the live city portal at lookup time.

Guides & use cases

Related actors