licenses

Search Licenses

Search licenses by contractor/business name or license number, optionally filtered by state.

A search term is required: state only narrows a name search, so the endpoint can't be used to page through a whole state's licenses. Without a paid key every request that returns licenses (each results page too) counts against a daily allowance; an empty or malformed search doesn't. The searches left are sent in X-Searches-Remaining.

Args: q: Substring to match against contractor name, business name, or license number (validated by SearchTerm). state: State to narrow the search to. Omit to search every state. limit: Max results to return. offset: Number of matching results to skip, for pagination. Capped at the same bound as the match count, so a page past it can't be requested. response: The response, for the remaining-searches header. caller: Injected caller, for its daily search allowance. repo: Injected LicenseRepository. counts: Injected SearchCountRepository, where the allowance is counted.

Returns: The matching page of licenses, plus the total match count.

Raises: HTTPException: 429 once the caller's searches for today are used up.

get/licenses

Request

  • Base URL: https://api.licenscheck.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.licenscheck.com/licenses
  • Auth: none declared

Query parameters

qstring required

Name, DBA, or license number to search for (required, 3-100 characters after trimming, with at least 3 letters or digits in a row).

state'AL' | 'AK' | 'AZ' | 'AR' | 'CA' | 'CO' | 'CT' | 'DE' | 'DC' | 'FL' | 'GA' | 'HI' | 'ID' | 'IL' | 'IN' | 'IA' | 'KS' | 'KY' | 'LA' | 'ME' | 'MD' | 'MA' | 'MI' | 'MN' | 'MS' | 'MO' | 'MT' | 'NE' | 'NV' | 'NH' | 'NJ' | 'NM' | 'NY' | 'NC' | 'ND' | 'OH' | 'OK' | 'OR' | 'PA' | 'RI' | 'SC' | 'SD' | 'TN' | 'TX' | 'UT' | 'VT' | 'VA' | 'WA' | 'WV' | 'WI' | 'WY'

USPS two-letter abbreviation for each US state and the District of Columbia.

Mirrored in airflow/dags/common/enums.py (kept dependency-free of this app -- see CLAUDE.md); test_airflow_enum_sync.py keeps the two in sync.

Two-letter state code to narrow a search to, case-insensitive.

limitinteger

Max results to return.

offsetinteger

Number of matching results to skip.

Response

Successful Response

totalinteger required

Total number of matches across all pages, before limit/offset. When total_is_exact is false this is either the 10,000 count cap (a search with more matches than that) or the table's estimated row count (an unfiltered listing).

total_is_exactboolean required

Whether total is an exact count rather than a cap or estimate.

Changes

No recorded changes to this operation across all 1 revision of this API.