Pest Control License Lookup Scraper — Texas Licenses
Pricing
from $4.00 / 1,000 license records
Pest Control License Lookup Scraper — Texas Licenses
Export pest control license records in bulk: license number, business name, issue and expiry dates from the Texas state report. USD 5 per 1,000 records.
Pricing
from $4.00 / 1,000 license records
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
12 hours ago
Last modified
Categories
Share
Pest Control License Lookup Scraper exports public pest control license records (license number, business or licensee name, license type, issue date and expiration date) from state license reports and registry pages. By default it reads the Texas Department of Agriculture report of current commercial structural pest control business licenses (3,892 businesses on 2026-10-27), and it costs USD 5.00 per 1,000 records on the FREE tier (USD 4.00 per 1,000 on GOLD) plus a USD 0.006251 start fee.
It is built for pest control suppliers, insurers, franchise and acquisition teams, lead-generation agencies and compliance researchers who need a clean list of licensed pest control businesses instead of checking one license at a time.
What data does the pest control license scraper return?
Each dataset row is one license record, deduplicated by license number and name within each source.
| Field | What it contains |
|---|---|
licenseNumber | License, certificate or permit number, for example the Texas TPCL number 0568372 |
licenseeName | Business or licensee name, for example GREENFOREST LANDSCAPING AND MAINTENANCE INC |
licenseType | License or account type, for example COMMERCIAL BUSINESS |
issueDate, expirationDate | Dates as the source publishes them, for example 06/16/1994 and 03/31/2027 |
status | License status when the source has a status column; null for the Texas report, which lists current licenses only |
address, phone, email | Contact columns when the source publishes them; null for the Texas report |
jurisdiction | Reserved; currently always null |
sourceUrl, scrapedAt | The page or file the record came from, and the collection time |
rawFields | Every original column and value when includeRawFields is on |
For the Texas report, rawFields adds the DBA name, county, license categories (for example PT), operator, insurance expiration, license renewal date, responsible applicator and the applicator's license number.
The run summary is saved as OUTPUT: outcome (DATA, FAILED or NO_RECORDS), records collected, charged events, source URLs, sources that returned HTTP errors or no records, and warnings.
How do I look up Texas pest control licenses in bulk?
Run the Actor with its default input. It downloads the Texas Department of Agriculture's public current-license report for commercial structural pest control businesses and returns up to maxResults records.
| Input | Example | Notes |
|---|---|---|
startUrls | Texas commercial business report (default) | Public license report CSV files or HTML pages with a license table |
maxResults | 500 | 1 to 5,000 records across all sources (default 100) |
includeRawFields | true | Keeps every original column in rawFields (default false) |
tableSelector | table#license-results | Optional CSS selector for HTML pages with several tables |
requestDelayMs | 500 | Pause after each source, 250 to 5,000 ms |
All current Texas commercial pest control businesses with every column:
{"startUrls": [{ "url": "https://texasagriculture.gov/Portals/0/Reports/PIR/spcs_commercial_business.csv" }],"maxResults": 5000,"includeRawFields": true}
The same department publishes sibling reports on its Structural Pest Control Reports page, such as non-commercial businesses (spcs_noncommercial_business.csv) and certified applicators (spcs_certified_applicator.csv), in the same folder. They load the same way, but only the commercial business report was tested in a cloud run.
Can I use it for other states' pest control license lookups?
Yes, when the state publishes its licenses at a fixed public URL as a CSV file or as an HTML page with a license table. The Actor maps common column names such as License Number, License No., Business Name, Licensee, Type, Status, Issue Date and Expiration Date.
Most state lookup tools are search forms instead: you type a name, and the results appear only after the form is submitted or JavaScript runs. Examples are the California, Arizona, Indiana and New Mexico searches. The Actor does not submit forms or run JavaScript, so a form page ends as a failed run with no records and no record charges. Use a direct results URL or an exported list when the state offers one.
When should I use it, and when not?
Use it when you need a bulk list of licensed pest control businesses in Texas, or you have a public license list URL from another state, for example to build a prospect list for pest control supplies or to check which competitors hold current licenses.
Use another Actor when:
- You need other Texas TDLR licenses by program, city, county or ZIP: TDLR License Scraper.
- You need California professional licenses: California DCA Professional License Scraper.
- You need licensed contractors in Washington, California or Texas: Contractor License Leads.
- You need city business licenses: HdL Municipal Business License Lookup.
- You need phone numbers or emails for pest control companies: the Texas report does not publish them.
How do I run it from code?
JavaScript with apify-client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/pest-control-license-scraper').call({startUrls: [{ url: 'https://texasagriculture.gov/Portals/0/Reports/PIR/spcs_commercial_business.csv' }],maxResults: 200,includeRawFields: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) console.log(item.licenseNumber, item.licenseeName, item.expirationDate);
Python with apify-client:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("muhammadafzal/pest-control-license-scraper").call(run_input={"startUrls": [{"url": "https://texasagriculture.gov/Portals/0/Reports/PIR/spcs_commercial_business.csv"}],"maxResults": 200,})for item in client.dataset(run.default_dataset_id).iterate_items():print(item["licenseNumber"], item["licenseeName"], item["expirationDate"])
Use it from an AI assistant
Pest Control License Lookup Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add the single-tool URL https://mcp.apify.com/?tools=muhammadafzal/pest-control-license-scraper to your client and ask, for example: "List 50 licensed commercial pest control businesses in Texas with license numbers and expiration dates." Each record is charged at the prices below, so include a result limit.
What does the output look like?
Two records from the Texas report on 2026-10-27. The first shows rawFields as includeRawFields: true returns it; the second is shortened:
[{"licenseNumber": "0568372","licenseeName": "GREENFOREST LANDSCAPING AND MAINTENANCE INC","licenseType": "COMMERCIAL BUSINESS","status": null,"issueDate": "06/16/1994","expirationDate": "03/31/2027","address": null,"phone": null,"email": null,"jurisdiction": null,"sourceUrl": "https://texasagriculture.gov/Portals/0/Reports/PIR/spcs_commercial_business.csv","scrapedAt": "2026-10-27T03:29:21.667Z","rawFields": {"TPCL": "0568372","ACCOUNT_TYPE": "COMMERCIAL BUSINESS","CATEGORIES": "LW","LEGAL_BUSINESS_NAME": "GREENFOREST LANDSCAPING AND MAINTENANCE INC","COUNTY": "DALLAS","LICENSE_EXPIRED": "03/31/2027","LICENSE_ISSUED": "06/16/1994","LICENSE_RENEWED": "03/31/2026"}},{"licenseNumber": "0569223","licenseeName": "MG BUILDING MATERIALS LTD","licenseType": "COMMERCIAL BUSINESS","issueDate": "05/02/2008","expirationDate": "05/31/2027","rawFields": null}]
The rawFields object above is also shortened; the full object holds the operator, insurance expiration and responsible-applicator columns too. Empty columns, such as a missing DBA name, are left out.
How much does a pest control license list cost?
The Actor uses pay-per-event pricing, and platform usage is included in the event prices. One license-record event is charged after each record is saved.
| Event | FREE | BRONZE | SILVER | GOLD / PLATINUM / DIAMOND |
|---|---|---|---|---|
| License record (one dataset row) | USD 0.005001 | USD 0.004875 | USD 0.00475 | USD 0.004 |
| Actor start (per started GB of allocated memory) | USD 0.006251 | USD 0.006094 | USD 0.005938 | USD 0.005 |
Worked totals on the FREE tier at the default 512 MB memory (one start event):
- 20 records (the Console example): 20 × USD 0.005001 + USD 0.006251 = USD 0.1063
- 1,000 records: 1,000 × USD 0.005001 + USD 0.006251 = USD 5.0073
A run that collects nothing (a dead URL, an error page or a page without a license table) fails without record charges; only the start event applies. If you set a maximum cost per run, the Actor stops cleanly when the limit is reached.
Limits and reliability
- Speed: the default Texas run with 20 records finished in about 6 seconds and peaked near 100 MB of memory on 2026-10-27; one request per source URL.
- Scale: up to 5,000 records per run across all sources; the Texas commercial report had 3,892 rows on 2026-10-27, so one run can export all of it.
- Freshness: records are as current as the state's published report on the day you run.
- Errors are not data: a source that returns an HTTP error (for example a moved page returning 404) is reported in
OUTPUTand never parsed. A run with no records ends as failed instead of looking like an empty success. - No forms or logins: the Actor reads public pages and files only. It does not submit search forms, run JavaScript, log in or solve CAPTCHAs.
FAQ
Is there a free pest control license lookup?
Each state's own lookup tool is free for single checks. This Actor is for bulk exports; it runs on Apify's free plan and charges the FREE-tier prices above.
How do I check if a pest control company is licensed in Texas?
Run the Actor with the default input and search the dataset for the company name or license number. The report lists current licenses with their expiration dates.
Does it return phone numbers or emails?
Only when the source publishes them. The Texas report has no phone or email columns, so those fields are null.
Can I get pest control applicator licenses instead of businesses?
Yes for Texas: point startUrls at the department's certified applicator report in the same folder. That report has not been tested in a cloud run yet, so check a small run first.
Why did my run fail with no records?
The URL returned an error, or the page is a search form or JavaScript page without a license table. OUTPUT.warnings says which, and no records are charged.
How do I export the list to Excel or CSV?
Open the run's dataset in Apify Console and export CSV, Excel or JSON, or fetch it through the Apify API.
Related Actors
- TDLR License Scraper: Texas TDLR license records
- California DCA Professional License Scraper: California professional licenses
- Contractor License Leads: licensed contractors in WA, CA and TX
- Mental Health Professionals Email Scraper: practice emails from public therapist websites
Legal and compliance
The Actor reads license records that state agencies publish for the public. Verify license status with the issuing agency before hiring, compliance or underwriting decisions, follow each source's terms and rate limits, and respect CAN-SPAM, TCPA and privacy rules when contacting businesses. This tool is not affiliated with any state agency.
Last verified: 2026-10-27