QBCC Licence Search Scraper - Queensland Builders & Trades avatar

QBCC Licence Search Scraper - Queensland Builders & Trades

Pricing

$1.60 / 1,000 per licensee returneds

Go to Apify Store
QBCC Licence Search Scraper - Queensland Builders & Trades

QBCC Licence Search Scraper - Queensland Builders & Trades

Every QBCC-licensed Queensland builder and trade contractor: ABN, ACN, business address, licence classes, status, trading names, revenue category - plus optional directors, licensed-since date and insured building-work record. 111,000+ licensees. $0.0016 per licensee.

Pricing

$1.60 / 1,000 per licensee returneds

Rating

0.0

(0)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

QBCC Licence Search Scraper — Queensland Builders & Trades

Every licensee on the Queensland Building and Construction Commission (QBCC) licensee register, as one clean row per licensee: name, trading names, ABN, ACN, business address with suburb and postcode, every licence class with its grade, status (Active / Suspended) and condition flag, and the QBCC Maximum Revenue category (a size signal). 111,853 licensees on the register on 2026-09-23 — 82,455 of them builders or trade contractors you can hire, 101,506 with a Queensland address.

Optionally, the Actor also reads each licensee's QBCC licence search certificate (the "full history" issued under s.99 of the QBCC Act) and turns it into data: company directors and secretaries, the nominee supervisor with their own licence number, the licensed-since date of every class, the six disciplinary answers, conditions with their full text, direction orders to rectify defective work, and the licensee's record of insured residential construction work — jobs and insured value per financial year. That last table is the one no directory has: it tells you which builders are actually building homes, and how much.

Who uses it: Queensland building-supply distributors and manufacturer reps, trade and home-warranty- adjacent insurers, tradie software (job management, quoting, payments), contractor-marketing agencies, and anyone checking that a Queensland contractor is licensed for the work it is quoting.

What QBCC does not publish: a phone number or an e-mail address. Neither the open data nor the live register carries one, so no row here has them. You get the ABN/ACN, the business address on the register, and — with the certificate on — the directors' names.

Why one row per licensee matters

QBCC's open data is one row per licence × licence class × grade — 204,313 rows for 111,853 licensees on 2026-09-23; a builder holding six classes is six rows. A scraper that emits file rows bills you six times for the same builder. This Actor folds each licence number into one row with its classes as a list, and checks the fold rather than assuming it:

  • name, business address, ABN, ACN, licence type and financial category must agree across a licence's rows (measured over the whole register: 0 of 111,853 licences break this); a licence that ever does is withheld and listed in the run summary, and more than 1% failing fails the run;
  • a class is the (grade, class) pair — 21,701 licensees hold classes under two different grades — and the one duplicated (licence, class, grade) row in the file is collapsed;
  • licence numbers are paged by key, never by offset, and a number seen twice fails the run;
  • a run that reads to the end is floor-asserted against the register's own count for your filters (COUNT(DISTINCT licence number) on the same query); a short read fails loudly instead of shipping a quietly smaller list.

Quick start

Plumbers (20 newest licensees) — the demo input:

{ "licenceClasses": ["Plumbing and Drainage"], "maxResults": 20 }

Builders on the Gold Coast (Surfers Paradise, Southport, Robina postcodes), with directors and work record:

{ "licenceGrades": ["Builder Licence"], "postcodes": ["4217", "4215", "4226"], "includeLicenceHistory": true, "maxResults": 500 }

Every Queensland company licensed for air-conditioning, in a Maximum Revenue category of $3M+:

{ "licenceClasses": ["Air-conditioning"], "licenseeTypes": ["Company"], "queenslandOnly": true,
"financialCategories": ["2", "3", "4", "5", "6", "7"], "maxResults": 2000 }

A weekly new-licensee feed (schedule it; the first run saves the baseline):

{ "onlyNewSinceLastRun": true, "stateKey": "all-qld-new", "maxResults": 2000 }

Look up specific licences:

{ "licenceNumbers": ["1000004", "658141"], "includeLicenceHistory": true }

Example output

A real row from a live run on 2026-09-23 (build 0.1.1, certificate on), unedited except the long licenceClassHistory array shortened to its first entry:

{
"licenceNumber": "15642641",
"licenseeName": "McFarlane Air Pty Ltd",
"tradingNames": ["MCFARLANE AIR"],
"licenseeType": "Company",
"licenceStatus": "Active",
"abn": "52 701 661 252",
"acn": "701 661 252",
"businessAddress": "9 COLEUS CT ANNANDALE QLD 4814",
"street": "9 Coleus Ct",
"suburb": "ANNANDALE",
"state": "QLD",
"postcode": "4814",
"isQueenslandAddress": true,
"licenceClassNames": ["Mechanical Services - Air-conditioning and Refrigeration (Limited Design)"],
"licenceGrades": ["Trade Contractor Licence"],
"licenceClasses": [
{ "className": "Mechanical Services - Air-conditioning and Refrigeration (Limited Design)", "classCode": "MSAL",
"grade": "Trade Contractor Licence", "status": "Active", "condition": false }
],
"classCount": 1,
"isBuilder": false,
"isTradeContractor": true,
"hasSuspendedClass": false,
"hasLicenceCondition": false,
"financialCategoryCode": "SCT1",
"financialCategory": "Self Certification - Trade",
"maximumRevenueBand": "Self-Certification 1 - up to $200,000",
"maximumRevenueCategory": "Self-Certification 1 - up to $200,000",
"givenNames": null,
"surname": null,
"registerAddress": "9 Coleus Ct, ANNANDALE, QLD 4814",
"addressShownOnRegister": true,
"registerDetailStatus": "ok",
"historyStatus": "ok",
"firstLicensedDate": "2026-09-15",
"keyPersonnel": [
{ "startDate": "2026-08-23", "name": "McFarlane, Christopher", "position": "Director", "address": "Townsville QLD 4813" }
],
"nominees": [
{ "startDate": "2026-09-15", "endDate": null, "name": "McFarlane, Christopher", "licenceNumber": "15187420",
"address": "Townsville QLD 4813", "current": true }
],
"disciplinary": {
"directionsToRectify": false, "disciplinaryAction": false, "convictions": false,
"infringementNotices": false, "demeritPoints": false, "exclusionsDisqualificationsOrBan": false
},
"hasDisciplinaryRecord": false,
"directionOrdersTotal": 0,
"insuranceClaimsRecorded": false,
"conditions": [],
"residentialWork": [],
"residentialJobsTotal": 0,
"residentialJobsLast3FinancialYears": 0,
"residentialValueLast3FinancialYearsAud": 0,
"latestResidentialWorkYear": null,
"licenceClassHistory": [
{ "className": "Mechanical Services - Air-conditioning and Refrigeration (Limited Design)", "commencementDate": "2026-09-15",
"recordsShown": true, "periods": [ { "dateFrom": "2026-09-15", "dateTo": null, "type": "Trade Contractor Licence",
"status": "Active", "reason": "New Application", "current": true } ], "conditions": [] }
],
"licenceRecordId": "0cEOc000000F61tMAC",
"historyPdfUrl": "https://my.qbcc.qld.gov.au/myQBCC/apex/QBCCLicenseeDocument?id=0cEOc000000F61tMAC",
"registerSearchUrl": "https://my.qbcc.qld.gov.au/myQBCC/s/qbcc-licensee-register",
"source": "QBCC licensee register (open data, data.qld.gov.au, CC-BY 4.0) + my.qbcc.qld.gov.au",
"openDataSnapshot": "23/09/2026",
"scrapedAt": "2026-09-23T07:07:54.004Z"
}

An established builder's work record looks like this (licence 658141, from the same certificate parser):

"residentialWork": [
{ "financialYear": "2026/2027", "jobs": 1, "insuredValueAud": 35000 },
{ "financialYear": "2025/2026", "jobs": 12, "insuredValueAud": 5607047 },
{ "financialYear": "2024/2025", "jobs": 10, "insuredValueAud": 4410640 }
],
"residentialJobsLast3FinancialYears": 23

Output fields

Identity and contact (always):

FieldWhat it is
licenceNumberQBCC licence number (the register's own id; one row per number)
licenseeNameName as published — company name, or the individual's full name
tradingNamesTrading names on the live register (list)
licenseeTypeCompany or Individual
abn, acnABN and ACN exactly as QBCC publishes them (52 701 661 252)
businessAddressThe business address in QBCC's open data, as published
street, suburbSplit from the live register's comma-separated address (never guessed from the open-data string)
state, postcode, isQueenslandAddressRead from the end of the address (QLD 4109, Queensland 4019)
registerAddress, addressShownOnRegisterThe live register's formatted address; if QBCC marks an address hidden, it is not shipped
givenNames, surnameFor individuals, from the live register

Licence (always): licenceClassNames, licenceGrades, licenceClasses (each: className, classCode, grade, status, condition), classCount, isBuilder, isTradeContractor, licenceStatus (Active, Partly active, Suspended), hasSuspendedClass, hasLicenceCondition, financialCategoryCode, financialCategory, maximumRevenueBand (the dollar band for the code), maximumRevenueCategory (the live register's label).

Certificate (with includeLicenceHistory): firstLicensedDate, keyPersonnel (directors / secretaries: start date, name, position, suburb), nominees (start/end date, name, licence number, suburb), disciplinary (six YES/NO answers), hasDisciplinaryRecord, directionOrdersTotal, insuranceClaimsRecorded, conditions (class, dates, type, full text), residentialWork (financial year, jobs, insured value), residentialJobsTotal, residentialJobsLast3FinancialYears, residentialValueLast3FinancialYearsAud, latestResidentialWorkYear, licenceClassHistory (per class: commencement date and every status period in the last 10 years).

Provenance: licenceRecordId, historyPdfUrl (the certificate itself), registerSearchUrl, registerDetailStatus, historyStatus, source, openDataSnapshot, scrapedAt.

Measured field fill

Register-wide, from SQL over the whole open-data register (111,853 licensees, 2026-09-23): name 100%, business address 99.99% (one blank, one placeholder-only), ABN 53.0% (59,295), ACN 24.8% (27,686 — effectively every company), financial category 100%, Queensland address 90.7%.

From live runs on build 0.1.1 (two frames, because the newest and the oldest licensees differ):

FieldNewest 1,000 licensees (default run)Newest 200, certificate onOldest-licence sample, 71 certificates
licence status100%100%100%
suburb100%100%—
ABN48.1%41.5%—
trading names5.6%5.5%9.9%
licensed-since date—100%100%
directors (of companies)—38 of 39 companies18 of 18 companies
disciplinary answers—100%100%
residential work record—0.5%76%

New licensees have not built anything yet, so the work record is almost empty in the newest frame and present for three-quarters of established licensees. Quote it as a range.

Input

InputDefaultWhat it does
licenceClassesallClass names, any-part match ("Plumbing" also matches Mechanical Services - Plumbing)
licenceGradesallBuilder Licence, Trade Contractor Licence, Nominee/Site Supervisor, Building Designer, occupational
licenseeTypesbothCompany / Individual
postcodesanywhere4-digit postcodes, matched at the end of the business address
suburbsanywhereWhole-word match in the address (a street of the same name also matches — prefer postcodes)
queenslandOnlyfalseDrop the ~9% of licensees with an interstate address
financialCategoriesallMaximum Revenue category codes (SCT1, SC2, 1–7, EMR…)
nameContains—Case-insensitive name filter
withAbnOnlyfalseOnly licensees with a published ABN
licenceNumbers—Lookup mode
sortOrdernewestLicence numbers rise over time; newest = most recently licensed first
includeRegisterDetailtrueLive-register lookup: status, trading names, suburb, condition flags
includeSuspendedfalseDeliver licensees whose every class is suspended
includeLicenceHistoryfalseParse the s.99 licence search certificate
onlyNewSinceLastRun, stateKeyfalseMonitor mode: only licence numbers not seen at your last run
maxResults100Rows to deliver and be charged for
proxyConfigurationdirectNot needed; see below

Pricing

$0.0016 per licensee delivered. No start fee. Filters, suspended licensees you did not ask for, and duplicates are never delivered and never charged. The live-register lookup and the licence certificate cost nothing extra. A default run ({}: 100 newest licensees) costs at most $0.16; the demo input costs $0.032.

How it works (and why it is reliable)

  1. QBCC open data — the Licensed Contractors Register on data.qld.gov.au. The 34.8 MB CSV sits behind an AWS WAF challenge, but the portal's datastore API is not, so each page is a server-side SQL query: filters run at the source and a 20-row run moves a few KB instead of 35 MB. Pages are keyset-paged on licence number and asserted under the portal's 32,000-row response cap. Measured on build 0.1.2: a walk of the whole register read 111,853 of 111,853 licence numbers (204,313 of 204,313 source rows) in 56 queries and 88 seconds, with zero duplicates.
  2. The live register (my.qbcc.qld.gov.au) — the same guest calls the register page makes, two per licensee: search by licence number (it is a prefix match, so the exact number is selected), then the licence detail. The page's framework id is read at run start and re-read if Salesforce rotates it mid-run.
  3. The licence certificate — the PDF behind "Licensee's full history", parsed from positioned text: each table's header gives the column positions, so wrapped cells (a director's name on two lines) are rejoined to the right column. Parsed cleanly on 71 of 71 old-frame and 200 of 200 newest-frame certificates.

Every non-200 or non-JSON answer is a transport failure, retried — never read as "no more data". If the live register fails for most licensees the run keeps delivering open-data rows and says so; nothing is charged twice.

Proxy: all three sources answered Apify's servers directly on 2026-09-23, so the default is no proxy. If you set one that cannot start, the run falls back to direct.

Limits of the data

  • No phone, no e-mail. QBCC publishes neither. Use the ABN to join other sources.
  • Cancelled licences are not in the open data. Suspended ones are (with no status column there) — the live register lookup supplies the status, and suspended licensees are skipped unless you ask for them. With includeRegisterDetail: false status is unknown and suspended licensees can appear.
  • Suburb comes only from the live register; with register detail off, you get the full address plus state and postcode but no separate suburb.
  • Directors and nominees carry a suburb, never a street — that is all the certificate prints.
  • The work record counts residential work notified for home-warranty insurance only; commercial work and work under the insurance threshold are not in it. QBCC shows the last ~10 years.
  • The open data is QBCC's snapshot (dated in openDataSnapshot); the live register is real time, so a licence cancelled today can still be in today's open data (registerDetailStatus: "not-on-live-register").
  • A licensee may also hold a separate individual or company licence — QBCC treats them as different licensees, and so does this Actor.

Source

QBCC Licensed Contractors Register (data.qld.gov.au, dataset qbcc-licensed-contractors-register) and the QBCC licensee register at my.qbcc.qld.gov.au. Source: Queensland Building and Construction Commission.

Other contractor-licence registers from the same publisher: RBQ Québec, ESA Ontario, HCRA Ontario, and NICEIC (UK).