Louisiana Contractor Licenses Scraper avatar

Louisiana Contractor Licenses Scraper

Pricing

from $1.92 / 1,000 item extracteds

Go to Apify Store
Louisiana Contractor Licenses Scraper

Louisiana Contractor Licenses Scraper

Search the official LSLBC registry and export license identity, status and dates, classifications, mailing address, phone, and publicly displayed email.

Pricing

from $1.92 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Search Louisiana contractor licenses in the official Louisiana State Licensing Board for Contractors (LSLBC) registry and export structured contractor records.

The Actor accepts business-name, person-name, license-number, and city searches. It follows each match to the public registry detail, then returns license identity, status and dates, classifications, qualifying parties, mailing address, phone, and publicly displayed email.

Use it for credential checks, compliance-list refreshes, contractor research, and source-attributed sales lists.

What does Louisiana Contractor Licenses Scraper do?

The Actor automates the public search workflow at arlspublic.lslbc.louisiana.gov.

For every input search it:

  1. opens an anonymous LSLBC search session;
  2. submits the selected filters;
  3. reads matching contractor identities;
  4. fetches each public contractor detail;
  5. normalizes all displayed licenses and classifications;
  6. removes duplicate contractors across searches;
  7. saves accepted records to the default Apify dataset.

It does not guess emails, enrich records from third-party websites, or claim that a record is current beyond the source timestamp.

Who is it for?

  • Compliance teams checking a contractor's displayed license status and expiry.
  • Construction suppliers refreshing source-attributed Louisiana prospect lists.
  • Insurers and risk teams reviewing classifications and qualifying parties.
  • Market researchers comparing licensed businesses by Louisiana city.
  • Data engineers loading repeatable registry snapshots into a warehouse.
  • Developers integrating LSLBC results through the Apify API or MCP.

Why use this Actor?

The public portal is designed for interactive searches, not reusable exports.

This Actor provides:

  • multiple searches in one run;
  • consistent JSON, CSV, Excel, XML, and RSS dataset exports;
  • detail fields instead of search-card summaries only;
  • active-only filtering after license details are parsed;
  • bounded concurrency and retries;
  • stable field names for scheduled workflows;
  • direct links to the official source response used for each record.

What data is extracted?

FieldMeaning
businessNameContractor name displayed by LSLBC
licenseNumberFirst displayed license number
licenseTypeType of the primary license
licenseStatusStatus of the primary license
isActiveWhether at least one displayed license is active
effectiveDatePrimary-license effective date
expirationDatePrimary-license expiration date
firstIssuedDatePrimary-license original issue date
mailingAddressPublic mailing address
city, stateLocation shown in search results
phonePublic phone shown by LSLBC, or null
emailPublic email shown by LSLBC, or null
classificationsClassification and qualifying-party objects
licensesEvery license displayed for the contractor
matchedSearchNormalized input filter that found the record
sourceUrlOfficial LSLBC detail endpoint
scrapedAtExtraction timestamp in ISO 8601 format

Contact fields are included only when the official board record displays them.

How to search the registry

Provide one or more objects in searches.

Search by company:

{
"searches": [{ "companyName": "Acme" }],
"activeOnly": true,
"maxItems": 25
}

Search by license:

{
"searches": [{ "licenseNumber": "49607" }],
"activeOnly": false,
"maxItems": 5
}

Search by city:

{
"searches": [{ "city": "Baton Rouge" }],
"activeOnly": true,
"maxItems": 100
}

You can combine filters in one object or submit up to 50 searches.

Input parameters

ParameterTypeDefaultDescription
searchesarrayrequiredBusiness, person, license-number, or city filters
searches[].companyNamestringFull or partial business name
searches[].firstNamestringIndividual first name
searches[].lastNamestringIndividual last name
searches[].licenseNumberstring1–12 digits; common LSLBC prefixes are accepted
searches[].citystringContractor mailing city
activeOnlybooleantrueKeep records with at least one Active license
maxItemsinteger100Maximum unique records, from 1 to 10,000
maxConcurrencyinteger4Parallel detail requests, from 1 to 10

Each search must contain at least one non-empty filter.

Output example

A current license-number search returns records shaped like this:

{
"businessName": "ACME ENTERPRISES, INC.",
"licenseNumber": "CL.49607",
"licenseType": "Commercial License Certificate",
"licenseStatus": "Active",
"isActive": true,
"effectiveDate": "02/20/2025",
"expirationDate": "02/19/2028",
"firstIssuedDate": "02/19/2009",
"mailingAddress": "15751 Martin Road Roseville, MI 48066",
"city": "Roseville",
"state": "MI",
"phone": "(586) ***-4800",
"email": "b***@acme-enterprises.com",
"classifications": [
{
"name": "BUILDING CONSTRUCTION",
"qualifyingParty": "J*** L***"
}
],
"licenses": [
{
"number": "CL.49607",
"type": "Commercial License Certificate",
"status": "Active",
"effectiveDate": "02/20/2025",
"expirationDate": "02/19/2028",
"firstIssuedDate": "02/19/2009"
}
],
"matchedSearch": { "licenseNumber": "49607" },
"sourceUrl": "https://arlspublic.lslbc.louisiana.gov/Public/_DisplayOnlineDetails/…",
"scrapedAt": "2026-09-07T15:45:13.427Z"
}

This is public registry data. Values can change when LSLBC updates its records.

How much does it cost to extract Louisiana contractor licenses?

Pricing is pay per event:

  • $0.005 once when a run starts;
  • a tiered fee for each contractor record saved.

The current BRONZE reference price is $0.0032 per contractor. The exact tier applicable to your Apify plan is displayed before starting a run.

Examples at the BRONZE rate:

Saved contractorsEstimated Actor charge
1$0.0082
25$0.0850
100$0.3250
1,000$3.2050

Empty searches incur only the start event. Duplicate, filtered, and failed records are not charged as items. Apify platform usage and proxy charges may appear separately according to your plan.

Getting started

  1. Open the Actor in Apify Console.
  2. Add at least one registry search.
  3. Leave activeOnly enabled for current-license lead lists.
  4. Set a small maxItems while testing.
  5. Click Start.
  6. Inspect the dataset's Contractors view.
  7. Export JSON, CSV, Excel, XML, or RSS as needed.
  8. Save the input as an Apify Task for recurring runs.

Schedule compliance and lead-list refreshes

Create an Apify Task with stable search inputs, then attach a daily, weekly, or monthly schedule.

Store the resulting dataset ID or export each run into your database. Compare records by licenseNumber and businessName to identify source changes.

The Actor produces snapshots. It does not send change alerts or compare runs itself.

Integration patterns

Useful workflows include:

  • check a license before vendor onboarding;
  • refresh active contractors for a selected city;
  • feed public contact fields into a CRM with source attribution;
  • join classifications to supplier territory data;
  • archive scheduled snapshots for internal compliance review;
  • trigger an Apify webhook after a successful run;
  • connect datasets to Google Sheets, Make, Zapier, or a warehouse.

Always retain sourceUrl and scrapedAt when auditability matters.

Run with the Apify API using cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~louisiana-contractor-license-leads-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searches": [{"city": "Baton Rouge"}],
"activeOnly": true,
"maxItems": 25
}'

Keep API tokens in environment variables or a secret manager.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client
.actor('automation-lab/louisiana-contractor-license-leads-scraper')
.call({
searches: [{ companyName: 'Acme' }],
activeOnly: true,
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor(
"automation-lab/louisiana-contractor-license-leads-scraper"
).call(run_input={
"searches": [{"licenseNumber": "49607"}],
"activeOnly": False,
"maxItems": 5,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with MCP and AI assistants

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/louisiana-contractor-license-leads-scraper"

Claude Desktop, Cursor, and VS Code setup

Use this equivalent MCP configuration in Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/louisiana-contractor-license-leads-scraper"
}
}
}

Example prompts:

  • “Verify Louisiana contractor license 49607 and summarize its current status.”
  • “Find up to 20 active contractors matching Acme and return their classifications.”
  • “Build a source-attributed list of 50 active Baton Rouge contractors with public phone and email fields.”

Accuracy, freshness, and limitations

  • LSLBC states that its public pages are provided as a courtesy and may not reflect recent changes.
  • Only records returned by the public portal are available.
  • Contact fields can be absent and are returned as null.
  • Search matching behavior is controlled by LSLBC.
  • Broad city or name searches can produce many candidates; use maxItems to bound the run.
  • An opaque detail link may expire after the run and is evidence of the extraction route, not a permanent record URL.
  • The Actor fails when the source returns an unrecognized or challenged page instead of silently producing empty data.
  • Source markup changes can require parser maintenance.

For an authoritative licensing decision, verify the current record with LSLBC.

Responsible use and legality

The Actor accesses anonymous, publicly displayed regulator records.

You are responsible for:

  • following applicable laws and Apify's terms;
  • using personal contact data for a lawful purpose;
  • respecting opt-out, suppression, and outreach requirements;
  • avoiding harassment, discrimination, or deceptive marketing;
  • securing exported datasets and limiting retention;
  • verifying important decisions against the official source.

The Actor is not legal advice and does not certify that a contractor is suitable for a project.

Troubleshooting

Review the run log and the input first. The questions below cover the most common source and data-shape issues.

FAQ

Why did my run return no records?

Check spelling and broaden one filter at a time. A license may not appear if the public portal does not currently return it. Set activeOnly to false when inspecting any status returned by a direct license search.

Why is email or phone null?

LSLBC does not display those fields for every contractor. The Actor does not infer, purchase, or scrape contact details from other websites.

Why did the run fail instead of returning an empty dataset?

The Actor detected an upstream network, rate-limit, or response-shape problem. Review the log and retry later. A failure prevents a source outage from being mistaken for a valid zero-result search.

Can I download every Louisiana contractor?

This Actor is optimized for bounded public registry searches. It does not promise a complete statewide roster. Use specific business, person, license, or city searches and a responsible item limit.

Can I search several cities or businesses together?

Yes. Add multiple objects to searches; results are deduplicated across the run.

Choose the Actor for the regulator that owns the license data you need.

Support

When reporting a problem, include:

  • the run URL;
  • a redacted input;
  • the expected search behavior;
  • whether the same search currently works in the public LSLBC portal.

Do not paste private credentials or unrelated personal data into a support request.