← Use cases

Use case

Check a Florida Contractor's License Status

Confirm a Florida contractor's license status and expiration before hiring or onboarding — straight from the official DBPR registry.

Say you’re the compliance lead at a general contractor in Tampa, and your subcontractor roster has something like eighty Florida licences on it. Every one of them was verified when the sub was onboarded. That verification has been quietly expiring ever since. Licences lapse, they go null and void, qualifiers move on — and the state doesn’t call you when it happens. It shows up when someone tries to pull a permit, or when a claim lands and the paperwork says the sub wasn’t licensed on the day of the work.

So the check isn’t one you do once. It’s one you do again, on the whole roster, on a cadence — and that’s the part the free portal doesn’t help with, because it has no concept of “the same eighty licences, again next quarter”.

The manual way, and what it costs

The public search form on DBPR
DBPR — the official search. One record at a time.

DBPR’s licensee search is public, free, and perfectly good at the thing it does: one licence, one status, right now. If you’re a homeowner checking the contractor who’s about to re-tile your bath, that page is the whole answer and you should just use it — pick Search by License Number, type the number, read the status. No tool needed, no account, no cost.

Now do it eighty times. Select the search type, type the number, submit, click into the detail page, read the status and the expiration, copy them somewhere, hit Back, repeat. That’s the roster, and there’s no batch input and no export from the results, so the output of an afternoon’s work is whatever you managed to paste into a spreadsheet — a snapshot with no structure behind it. Do it again next quarter and you get a second snapshot you have to eyeball against the first to see what changed. The manual portal is fine for a lookup and useless as a control: it gives you an answer, not a record, and it can’t be put on a schedule.

The faster way

Florida Contractor License Lookup & Verify (DBPR) does the same search once and hands back every row at once.

{
  "query": "CGC1519368",
  "includeDetails": true,
  "maxResults": 1
}

One licence here, keyed by the number you already hold on file (pass queries instead to re-check a whole list of subs in a single run). query is the DBPR number from the sub’s record, so the actor looks it up directly rather than guessing from a name — no ambiguity, no candidate set, exactly the licence you’re re-checking. maxResults is 1 for the same reason. includeDetails stays on because status alone isn’t the whole answer: you want expiration_date to know how long the current answer is good for, and the county and address to confirm you’re still looking at the same entity you onboarded. The roster case is this input, once per licence, driven from the API on a schedule — the run is the control, and its dataset is the record you keep.

What comes back

{
  "state": "FL",
  "license_number": "CGC1514724",
  "business_name": "ARIZA, JOHN MARIO",
  "person_name": "ARIZA, JOHN MARIO",
  "license_type": "Certified General Contractor",
  "status": "Null and Void",
  "issue_date": "12/21/2007",
  "expiration_date": "08/31/2020",
  "city": "COOPER CITY",
  "county": "Broward",
  "address": "11671 SW 50TH COURT",
  "zip_code": "33330",
  "matched_by": "license_number",
  "source_url": "https://www.myfloridalicense.com/portalsearches/VerifyLicensee/LicenseDetail?lic=CGC1514724"
}
FieldExample valueMeaning
stateFLAlways ‘FL’ for this actor
license_numberCGC1514724DBPR license number (class prefix + digits)
business_nameARIZA, JOHN MARIOLicensed business or licensee name
person_nameARIZA, JOHN MARIOIndividual licensee/qualifier name (detail)
license_typeCertified General ContractorDBPR license/board classification (e.g. Certified General Contractor)
statusNull and VoidLicense status (e.g. Current,Active, Null and Void)

status is the answer and expiration_date is its shelf life. The row above is what a failed check looks like: a Certified General Contractor whose licence is Null and Void, expired 08/31/2020. On a roster, that’s the sub who quietly stopped being licensed and is still being assigned work. Read the two fields together and you get more than pass/fail — a licence that’s Current,Active with an expiry six weeks out is a renewal to chase, not a crisis, and only structured data lets you tell those two apart automatically. DBPR’s status strings are its own vocabulary rather than a simple active/inactive flag, so match on the exact values the registry returns. source_url is the audit trail: it points at the state’s own record, which is what you want attached to the file when somebody asks how you knew.

What you’d do with it

Point it at the roster and let it run. Schedule the actor per licence number through the Apify API, write the rows into your compliance system keyed on license_number, and let two rules do the work: flag anything whose status isn’t the value you accept, and flag anything whose expiration_date falls inside your renewal window. That turns a quarterly copy-paste afternoon into a report that lands on its own, and — because each run’s dataset is kept — into a history you can diff: this licence was current in March and isn’t now, and here’s the DBPR link that says so.

Worth knowing

This is Florida’s DBPR public licensee registry and only that — a sub licensed in another state isn’t in it. The status you get back reflects the live registry at lookup time, which is precisely why this is a scheduled check and not a one-off: today’s Current,Active is not a permanent answer, and no run of this actor makes it one. Runs are bounded (default 50 results). And DBPR’s record has gaps the schema can’t fill: bond, insurance and phone fields are present for consistency with the rest of the license-lookup suite, but DBPR generally doesn’t publish them, so they come back null. If your compliance check requires proof of bond or insurance, this verifies the licence, not the coverage.


Run it yourself: How to run Florida Contractor License Lookup & Verify (DBPR) walks the whole thing step by step.

Only have a company name for a sub? Look Up Florida Contractors by Name resolves it to the licence number you’ll re-check from then on.

Screening subs on safety as well as licensing? OSHA Violation Risk checks the same contractors against federal inspection and violation records.

Last updated 2026-07-13