← Use cases

Use case

Search Pomona Business Licenses by Name

Look up a business's municipal license in Pomona, CA (HdL Companies portal) by business name -- account #, issue/expiration dates, and address.

Say you distribute salon supplies across the eastern San Gabriel Valley and want every nail salon in Pomona on one sheet — the ones that hold a city licence and are still trading. A maps scrape gives you closed storefronts, duplicate pins and three listings for the same shop; a state entity search gives you LLCs, which is not the same thing as a salon with a door on Foothill Boulevard.

The city knows. Pomona, like dozens of California municipalities, runs its public business-licence register on HdL Companies’ portal, searchable by business name, with the account number, address and licence dates on each record. The awkwardness is that the portal shows it to you one screen at a time.

The manual way, and what it costs

The public search form on HdL (city portals)
HdL (city portals) — the official search. One record at a time.

The portal is free and open to anyone. If you want to check whether one business holds a Pomona licence, go and type its name in. That is the honest advice; it takes thirty seconds and the city’s own screen is the authority.

The friction is the shape, not the access. There is no export and no API — you get a table on a page, and the address arrives as one line with city and ZIP baked in. Turning “every nail salon in Pomona” into a usable sheet means running the search, copying rows, splitting addresses by hand, then doing it again for SPA and again for NAILS, because the match is a substring and the register spells things however each licensee wrote them. Hayward next week is a different subdomain and the same afternoon over again.

The faster way

HdL Municipal Business License Lookup does the same search once and hands back every row at once.

{
  "citySubdomain": "pomona",
  "query": "Nail",
  "searchType": "Business Name",
  "maxResults": 100
}

citySubdomain: "pomona" is the whole coverage question in one field: this actor searches one HdL city per run, and the value is the bare subdomain of that city’s portal — pomona, not pomona.hdlgov.com and not Pomona, CA. If your city is not on HdL, this actor has nothing for you; if it is, you need its subdomain, and only pomona, hayward and elcajon are confirmed to answer a plain request (more on that below). searchType: "Business Name" points the query at the name index rather than the address one. query: "Nail" is deliberately short, because the match is a substring: Nail catches NAILS, NAIL SPA and BEE POLISHED NAILS SPA, where Bee Polished Nails Spa LLC would catch nothing if the city never recorded the suffix. maxResults: 100 is the spend cap — you pay per row returned, and a one-letter query in a city this size can match thousands.

What comes back

{
  "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"
}
FieldExample valueMeaning
jurisdictionPomonaThe HdL city instance searched (e.g. ‘Pomona’)
account_number00204231The city’s business-license account number
business_nameBEE POLISHED NAILS SPALicensed business name
issue_date4/24/2019License start/issue date
expiration_date3/31/2027License expiration date
address663 E FOOTHILL BLVDStreet address, when the city publishes it

For a territory sheet, the address block is the payoff. HdL prints it as a single line — 663 E FOOTHILL BLVD, POMONA, CA 91767 — and the actor splits it into address, city, state and zip_code, so it drops straight into a route plan or a mail merge without a text-to-columns step. Watch the difference between city and jurisdiction: jurisdiction is the register you searched, city is the address on the licence, and a business licensed in Pomona can have a mailing address somewhere else. Filter on jurisdiction when you mean “licensed here”.

expiration_date is the closest thing you get to “still trading” — a licence that expired in 2021 is not a call worth making. Read it as text, though: the portal returns US-style M/D/YYYY strings and that is exactly what comes back, so compare them as dates yourself. account_number is the city’s own key for the record, which is what you dedup and re-check against later.

What you’d do with it

Export the dataset to CSV and it is a route list: business name, street, ZIP, licence dates. Run the two or three name fragments the trade actually uses (Nail, Salon, Spa), stack the exports, and dedup on account_number — that is the field that catches the same shop arriving twice. Drop the rows whose expiration_date is in the past, and what remains is a call sheet for one city. Re-run it next quarter and the account numbers you have not seen before are the new openings.

Worth knowing

One city per run, and only HdL cities at all. This reads city portals hosted by HdL Companies. If your city runs its register on something else, there is nothing here for it. And some hdlgov.com cities sit behind a Cloudflare challenge that a plain HTTP request cannot pass — those runs fail with an explicit message naming a reachable city instead of returning wrong data. Pomona, Hayward and El Cajon are the cities proven to answer. Others share the same schema and may work, but no proxy setting or retry gets you into a challenged one.

There is no status field. HdL publishes no active/expired flag here, so “is this licence current” is your inference off expiration_date, not the city’s declaration.

Some addresses are withheld. When the licensee’s address is not public the portal prints --ON FILE--, and the actor returns null across all four address fields rather than parsing that as a street. On a route list, those rows are unusable.

No contact details. A business-licence record is a name, an account number, dates and an address — no phone, no email, no owner name. It reads the live portal at run time, so what you get is that city’s register at that moment, and a broad query can match far more than you meant, which is what maxResults is for.


Run it yourself: How to run HdL Municipal Business License Lookup walks the whole thing step by step.

Last updated 2026-07-22