Delaware Business Licenses Scraper — New Business Leads
Pricing
from $2.10 / 1,000 business licenses
Delaware Business Licenses Scraper — New Business Leads
Scrape active Delaware state business licenses from the Division of Revenue via the official data.delaware.gov API: business and trade name, license category, validity dates and address. Filter newly issued licenses by year, city, ZIP and category for B2B lead generation. Export CSV, Excel, JSON.
Pricing
from $2.10 / 1,000 business licenses
Rating
0.0
(0)
Developer
Groundplane Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Features
Share
The Delaware business licenses scraper gives you one row per active Delaware business license for Delaware, straight from the Delaware Division of Revenue via the official data.delaware.gov API. No login or coding needed: run it in your browser, on a schedule, or through the Apify API, and export results as JSON, CSV or Excel.
Get newly licensed Delaware businesses as a ready-to-use lead list. The data comes from the Delaware Division of Revenue through the official open-data API (data.delaware.gov dataset 5zy2-grhr). The state republishes the dataset daily.
What you get
Each row is one license plus one trade name. A license registered under several trade names (DBAs) appears once per trade name with the same licenseNumber. Turn on dedupeLicenses to get one row per license. Each row includes the legal and trade name, license category (contractor, retailer, professional services and so on), the year first issued, validity dates, address and coordinates. Rows are sorted newest license first, with a stable tiebreak, so large runs never skip or repeat rows.
Sample output
{"licenseNumber": "2026952108","businessName": "SOLEX LLC","tradeName": "ZION HVAC","category": "RESIDENT CONTRACTOR","licenseYear": 2026,"validFrom": "2026-02-09","validTo": "2026-12-31","address": "165 LIBORIO DR","city": "MIDDLETOWN","state": "DE","zip": "19709","country": "UNITED STATES","latitude": 39.45396,"longitude": -75.7308,"source": "Delaware Division of Revenue via data.delaware.gov"}
The same license also appears with trade name ZION SHEET METAL, which is one row per trade name.
Use cases
- B2B sales: reach brand-new businesses that need accounting, insurance, banking, payroll, signage, websites or POS systems.
- Contractor lead lists: filter with
categoryContains: CONTRACTOR. - Market research: track new-business formation by city or ZIP.
How to scrape Delaware business licenses
- Click Try for free (or Start) on this page. A free Apify account is enough.
- Leave the prefilled input to get a quick sample, or set the filters described below.
- Set maxItems to cap how many rows (and how much) a run returns.
- Click Start and wait a few seconds to a minute.
- Download the results as JSON, CSV or Excel, or connect them to Google Sheets, Zapier, Make or a webhook.
Input
| Field | Description |
|---|---|
| newSinceYear | Year first issued, or later. Leave empty to use the current year automatically. Use 1900 for all active licenses. |
| issuedSinceDate | Optional real date, YYYY-MM-DD. Invalid dates fail fast with a clear message. |
| delawareOnly | Default true. This drops several thousand out-of-state licensees (3,850 of the 2026 license set as of Nov 2026). |
| cities / zipCodes | Location filters |
| categoryContains | e.g. CONTRACTOR |
| excludeTradeNameOnly | Drop DBA-only registrants |
| dedupeLicenses | One row per license number instead of one per trade name |
| maxItems | Default 200 |
Run status and freshness
Every run ends with a status message you can trust. The counts in the message (licenses delivered, licenses matched, source rows scanned) are the real counts.
Complete means the run delivered the licenses it set out to deliver, with no source-caused problem and no charge cap hit. A run capped at maxItems still ends Complete: it delivers maxItems licenses, and the status states the cap, how many licenses matched in total, and how many source rows were scanned. A filter that matches nothing is a successful Complete: 0 run, not an error.
PARTIAL means the run delivered licenses but something limited or degraded the result, and the message says exactly why. There are two kinds of reason:
- Source-caused: some source rows were skipped as invalid (a core field missing or unparseable), some coordinate values were unparseable or out of range and shipped as null, a core column carried no value on any scanned row (a possible source rename or emptied column), or the source looks stale (see below).
- The charge cap: your max charge limit was reached. The run stops cleanly and reports how many rows it delivered. This is the only cap that produces a PARTIAL: a
maxItemscap on its own does not.
On a PARTIAL with a source-caused reason, the status ends with the Issues CTA: "If this keeps happening, please open an issue on this actor's Issues tab and we'll fix it fast." That CTA appears on source-caused PARTIALs only. It does not appear on a PARTIAL caused only by the charge cap, and it does not appear on Complete runs.
The state republishes the dataset daily. Each run also reports the newest license validity start date in the source as a whole, and flags the run PARTIAL when that date is more than 14 days old.
Canary input
To sanity-check the actor, run it with {"newSinceYear": 2026, "maxItems": 5}. You should get 5 licenses, newest first, ending in a Complete status.
Troubleshooting
- Zero matches: widen the year (
newSinceYear: 1900covers every active license), clear city/ZIP/category filters, or check the spelling of a category against the categories the state actually uses (for exampleGENERAL SERVICES,RESIDENT CONTRACTOR,RETAILER GENERAL). There is no CONSULTANT category in the source. - Stale data PARTIAL: the source has not published a newer license validity start in over 14 days. The rows are still the latest the state has published.
- Caps:
maxItemsand your run charge limit both stop the run early; the status message states the cap and how many licenses matched in total. - Anything else: open an issue on this actor's Issues tab and we'll fix it fast.
Pricing (pay per event)
$3 per 1,000 rows ($0.003 each), plus Apify's minimal $0.00005 start fee. Example: 200 leads cost about $0.60. If a run hits your max charge limit, it stops cleanly and reports how many rows it delivered.
Data caveats
Data is provided as published by the State of Delaware. Some source records have implausible dates (for example a validFrom of 2092-07-11). These are passed through unchanged. licenseYear is derived from the first four digits of the license number, not from a separate state field.
License and disclaimer
The source dataset is Public Domain (data.delaware.gov). Only public business records are included, with no personal contact data. This actor is not affiliated with or endorsed by the State of Delaware. It covers state business licenses, not the Delaware corporations registry.
FAQ
How much does it cost to scrape Delaware business licenses?
You pay $0.003 per result ($3 per 1,000) plus a $0.00005 start fee, and nothing else. That is the free-plan price: on paid Apify plans you pay less per result (Bronze 10%, Silver 20%, Gold and above 30% off). Apify's free plan includes $5 of monthly credit, which covers about 1,600 results. See Pricing above for a worked example.
Is it legal to scrape Delaware business licenses?
This Actor reads public records from the Delaware Division of Revenue via the official data.delaware.gov API, using only public endpoints (no login, no CAPTCHA bypass, no private accounts). See the source/license section above for the dataset's terms. You are responsible for how you use the data; this is not legal advice.
How fresh is the data?
Each run reads the source live, so you get whatever the agency has published at that moment. How often the agency updates, and any known lag, is described in the data caveats/notes section above.
Can I use it via API, on a schedule, or with Google Sheets?
Yes. Every Apify Actor has a REST API and client libraries for Python and JavaScript. You can schedule daily or weekly runs, and send results to Google Sheets, Slack, Zapier, Make, n8n, webhooks, or an AI agent via the Apify MCP server.
I need another city, county or field. Can you add it?
Open an issue on the Issues tab with the city or data source you need. We build new public-records scrapers regularly.
More public-records scrapers by Groundplanes
Same clean output, pay-per-result pricing and official public data sources:
Restaurant & food inspections
- Maricopa County (Phoenix) Restaurant Inspections Scraper
- Las Vegas Restaurant Inspections & Grades Scraper (SNHD)
- Pittsburgh Restaurant Inspections Scraper (Allegheny County)
- Delaware Restaurant Inspections Scraper — Statewide Violations
- Boulder CO Restaurant Inspections Scraper — 2013–2026 Snapshot
- Montgomery County MD Restaurant & Food Inspections Scraper
- NY State Restaurant Inspections Scraper — NYSDOH, Non-NYC
- Boston Restaurant Inspections Scraper — Health Violations
- Santa Clara County Restaurant Inspections Scraper — San Jose
Code violations & distressed property leads
- Pittsburgh Code Violations Scraper — Distressed Property Leads
- Orlando FL Code Enforcement Scraper — Code Violation Leads
- New Orleans Code Violations Scraper — Code Enforcement Leads
Business licenses & new business leads
- Norfolk VA Business Licenses Scraper — New Business Leads
- Berkeley CA Business Licenses Scraper — Local B2B Leads
- New Orleans Business Licenses Scraper — New Business Leads
Changelog
- 0.2.3 (audit candidate fix round 2, 2026-11-03): fixes one defect found live after the 0.2.2 candidate was briefly promoted: a row whose key is absent because its value is null (the source API omits null-valued keys) was counted invalid, so healthy rows were skipped and the default run ended PARTIAL. An absent key now reads as the source's null, exactly as a present null does; a wrong-typed value still counts the row invalid, and a renamed or emptied column is still caught by the column guards. Verified on the live source: the default run ends Complete and its output is row-identical to the shipped actor.
- 0.2.2 (audit candidate, documentation fix, 2026-11-03): no code or output changes. The Run status section now lists the hollow-column PARTIAL reason, so every source-caused PARTIAL reason the actor can produce is documented, and this changelog gains the 0.2.1 entry below.
- 0.2.1 (audit candidate fix round, 2026-11-03): no output changes on healthy data. Closes the source-guard class: the run fails loudly when the source column metadata cannot be read, a missing core field counts the row invalid, and a core column with no value on any scanned row ends the run PARTIAL naming the column. Every field is type-checked before shipping, status counts name the set they were counted over, and the invalid-rate check runs before a page is pushed.
- 0.2 (audit candidate, 2026-11-03): no output changes on healthy data. Adds a core-column sentinel and per-row validation so a changed source fails loudly instead of shipping hollow rows, the Complete/PARTIAL run status contract with scanned/matched counts and a freshness statement, and the fleet retry standard. Fixes the category examples in the input schema (there is no CONSULTANT category in the source) and the out-of-state count claim.
- 0.1: initial release.