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.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
jurisdiction | string|null |
account_number | string|null |
business_name | string|null |
issue_date | string|null |
expiration_date | string|null |
address | string|null |
city | string|null |
state | string|null |
zip_code | string|null |
matched_by | string|null |
source_url | string|null |
scraped_at | string|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
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
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