- Online
- API
- EDL (Enterprise Data License)
Introduction
This release marks a major milestone: Shovels is now powered entirely by our own data pipeline. We’ve transitioned away from our third-party permit data provider, giving us full end-to-end ownership over permit and contractor data quality, enrichment, and refresh cycles. While the total permit count is lower, the data is significantly richer — with improved field coverage across the board, a powerful newdescription_derived field on 81M permits, and better contractor intelligence. This is a one-time transition and a stronger foundation for everything going forward.✨ New
🔄 Fully Shovels-Owned Pipeline100% Shovels-Owned Data — faster iteration, better enrichment, consistent data provenance.All third-party provider data has been removed. This gives us full control over data quality and allows us to iterate faster on enrichments without vendor dependencies. Each future release will continue as a full snapshot, growing as we expand our coverage.🏗️ Permits Dataset
Net-New Permits Added- +11.6M Permits — expanded coverage across new jurisdictions: NY (+4.0M), TX (+3.5M), FL (+1.9M)
- Total permits in this release: 129.9M
- Permits retained with original IDs: 118.3M
- Permits filed in March 2026: 352K
description_derived- 81M Permits — 62.4% coverage
- A clean, plain-English summary of each permit’s raw description (e.g., “Tear off and replace the roof on an existing single-family home”)
- Subtype coverage: 75.7% (+18%)
- Final date coverage: 70.5% (+16%)
- Fees coverage: 65.0% (+11%)
- Job value coverage: 62.6% (+10%)
- Issue date coverage: 80.5% (+9%)
- File date coverage: 90.5% (+4%)
👷 Contractor Intelligence
Contractor License Coverage- 63.5% (+20%) — up from 43%, significantly richer licensing data on 2.5M contractors
- Phone number coverage: 57.7% (+7%)
- Email address coverage: 30.2% (+6%)
⚠️ Important Changes
This release includes breaking changes. Please review carefully.Contractor IDs have been regenerated — if you’ve stored contractor IDs, they will need to be updated. We’ve prepared a contractor ID changelog mapping old IDs to new ones — 81.8% of new contractors are mapped. Download below:For background on how contractor IDs work, see Why Contractor IDs Can Change.Permit count decreased — from 216M to 130M. 98M older permits sourced from a third-party provider were removed. The 118.3M permits that remain kept their original IDs — no action needed for those records.Contractor count decreased — from 3.9M to 2.5M. This reflects the removal of duplicates and low-quality records. The remaining 2.5M contractors are cleaner and more richly attributed.Some jurisdictions have reduced coverage — DC was dropped entirely. VT, RI, MA, CT, DE, WI, and NM lost >80% of permits due to the removal of third-party data. Coverage will grow as we expand our own data collection.first_seen_date has been reset — all values now fall between 2025-05-19 and 2026-03-28. Going forward, this field will accumulate normally with each biweekly release.Employee and resident records reduced — Employees: 38.1M → 12.8M. Residents: 45.9M → 27.6M.- Online
- API
- EDL (Enterprise Data License)
Introduction
Big month. We’re launching Shovels CLI — a new way to query permits, contractors, and addresses from the command line (or let your AI agent do it). On the data side, we added 1.8M new permits and geocoded another 1.4M records. Let’s get into it.✨ New
>_ Introducing Shovels CLIYour AI agent’s gateway to U.S. construction dataOne binary. Zero config. Pure JSON.Search permits, query contractors, resolve addresses — all from your terminalInstall in seconds- JSON-only output to stdout, errors to stderr
- Auto-pagination with
--limit all - Auto-retry with backoff on rate limits
- Help text optimized for LLM comprehension
🏗️ Permits Dataset
New Permits Discovered- 1.8M Records
- Expanding historical and current coverage across all jurisdictions
- Permits filed in February 2026: 156K
- Permits filed year-to-date (2026): 462K
- Electrical Permits: +388K - Largest category growth this release
- New construction permits: +203K
- HVAC permits: +136K
- Remodel permits: +136K
- Roofing permits: +91K
- Plumbing permits: +71K
- Solar permits: +23K
- Demolition permits: +19K
- ADU permits: +12K
- EV charger permits: +2.2K
📍 Geocoding Improvements
Additional Permits Geocoded- +1.4M Records
- Now with latitude and longitude coordinates for spatial analysis
- Online
- API
- EDL (Enterprise Data License)
Introduction
We’re kicking off February with 6.1M new permits, 142K new contractors, and 5.2M additional geocoded records. Here’s the full breakdown.🚀 What’s New
🏗️ Permits Dataset
New Permits Scraped- 6.1M records
- Expanding historical and current coverage across all jurisdictions
- Permits filed in January 2026: 197K
- Electrical Permits: +911K - Largest category growth this release
- New construction permits: +803K
- HVAC permits: +620K
- Remodel permits: +549K
- Plumbing permits: +447K
- Roofing permits: +268K
- Solar permits: +234K
- Demolition permits: +120K
- ADU permits: +100K
- EV charger permits: +9K
📍 Geocoding Improvements
Additional Permits Geocoded- +5.2M records
- Now with latitude and longitude coordinates
👷 Contractor Intelligence
New Contractors Added- +142K records
- Expanding the contractor database
⚠️ ID Updates
5M IDs UpdatedIDs were updated to correct issues arising from data collected across multiple platforms, as well as changes in administrative jurisdictions.- Most affected areas: Oregon, Douglas County, Omaha
🤖 Charlie - Your AI Research Agent
What is Charlie?Charlie is your AI research agent for building permits and contractors. Ask questions in plain English—no SQL, no filters—and get answers instantly.January 2026 Updates:- Automatic error recovery – Charlie now automatically reconnects when the backend restarts. No more persistent errors requiring page refreshes.
- Clickable profile links – When Charlie returns contractor or permit results, you now get direct links to their profile pages.
- Improved county queries – Fixed an issue where county-based queries were failing due to formatting mismatches.
Try it out – Visit charlie.shovels.ai to start asking questions.
- Online
- API
- EDL (Enterprise Data License)
Introduction
Happy New Year! We’re starting 2026 with 5.5M new permits, 4.7M additional geocoded records, and 171K new contractors. On the API side, we’ve added negative query filters and dynamic tallies, plus performance improvements for contractor and text search. Here’s everything new this month.🚀 What’s New
🏗️ Permits Dataset
New Permits Added- 5.5M Records
- Expanding historical and current coverage across all jurisdictions
- Permits filed in December 2025: 295K
- Electrical Permits: +1.3M - Largest category growth this release
- Plumbing permits: +803K
- HVAC permits: +569K
- New construction permits: +460K
- Remodel permits: +351K
- Roofing permits: +267K
- Solar permits: +131K
- ADU permits: +82K
- Demolition permits: +65K
- EV charger permits: +18K
📍 Geocoding Improvements
Additional Permits Geocoded- +4.7M Records
- Now with latitude and longitude coordinates
- Total geocoded permits: 143.9M
👷 Contractor Intelligence
New Contractors Added- +171K Records
- Total now: 3.6M contractors in our database
- Additional contractor licenses captured: +256K
- Additional primary phone numbers available: +69K
- Additional primary email addresses available: +40K
- Online
- API
- EDL (Enterprise Data License)
Introduction
This month brings substantial improvements across data quality, coverage, and enrichment. We’ve significantly expanded our permits dataset with better field coverage, added 160 new jurisdictions, and continued strengthening our contractor intelligence with enhanced parsing and enrichment.🚀 What’s New
🏗️ Permits Dataset
Historical Permits Added- 6.6M records
- Expanding historical coverage across all jurisdictions
- Permits filed in November 2025: 222K
- 14M more records
- Better financial insights for market analysis
- Additional permits with job values: 10M
- Additional records with issue dates: 13M
- Improved description, type, and subtype coverage
- Enhanced permit classification and categorization across the dataset
📍 Coverage Expansion
New Jurisdictions Added- 160 jurisdictions
- Expanding our nationwide coverage footprint
- APN (Assessor’s Parcel Number) field added to 40M permits
- Enabling better property linkage and parcel-level analysis
👷 Contractor Intelligence
Dataset Expansion- 63K new contractors - expanding your universe of potential partners
- Additional addresses parsed: 50K
- Additional phone numbers available: 40K
- Additional license issue dates captured: 7K
- Enhanced geographic coverage
- Expanded city, street, and ZIP code coverage across all states
- Online
- API
- EDL (Enterprise Data License)
Introduction
This month’s release brings significant intelligence improvements across our platform. We’ve enhanced our data classification capabilities, expanded geographic coverage, and continued growing both our permits and contractor datasets with better enrichment quality.🚀 What’s New
🧠 Data Intelligence BreakthroughProperty Type Classification Enhanced- 20M+ Permits Reclassified
- 4M additional addresses now correctly labeled as commercial or residential
🏗️ Permits Dataset
- Permits filed in October 2025: 180K
- Historical permits added to the database: 3.4M
🗺️ Geographic Intelligence
- Enhanced FIPS code coverage across all permits
- Simplifying geographic analysis and enabling more accurate county-level aggregation for your research and targeting needs
👷 Contractor Intelligence
Dataset Expansion- 66K New Contractors - Expanding your universe of potential partners with cleaner, better-deduplicated data
- Phone number coverage increased: +3.6%
- Email address coverage increased: +4.5%
- License field coverage increased: +10.6%
- Online
- API
- EDL (Enterprise Data License)
Introduction
This month marks a pivotal moment in our mission: we’ve begun bridging the gap between online and offline permit data. For the first time, we’re bringing dark data into the light, accessing jurisdictions that have never made their records digitally available. Combined with significant growth across our platform, October’s release represents our most comprehensive coverage to date.🚀 What’s New
Bridging the Digital Divide: Offline Jurisdictions Brought Online- 500K+ Records
- First-ever offline permit acquisition from Cook County, IL and Oak Ridge North, TX
📊 Data Growth
Total Records- 185M (+10M new permit records added - historical and newly filed)
- Permits filed in September: 80K
- Permits filed in 2025 year-to-date: 4.5M
👷 Contractor Intelligence
New contractors added to our database- 190K contractors - Expanding your universe of potential partners and competitors
- New license records: 70K
- New contractor phone numbers: 200K+
- New contractor email addresses: 100K+
- Online
- API
- EDL (Enterprise Data License)
✨ New
- Total Records: 174 million (+700K from last month)
- New Permits from August: 162,281 - Our biggest monthly addition to date!
- Permits Transitioned to Finalized Status: 560K
- New Address Points: 450K with precise geo-coordinate mapping
- New Jurisdictions in Coverage: 119
🚀 Upgrades
- Enhanced Data Collection Methods: Improved fill rates across all data points
- Job Value Entries: 2.3M+ new entries added across permits for better cost estimation
- New Construction Permits: 55,000
- New HVAC Permits: 124,000
👷 Contractor Data Enhancements
- New Contractors Added: 13,000
- New License Records: 70,000
- New Phone Numbers: 8,000
- New Email Addresses: 30,000
- Online
- API
- EDL (Enterprise Data License)
✨ New
- Total new permits added: Over 3 million across all U.S. states.
- California: 2 million of these permits were added, making it our largest single-state update.
- 2025 permit count-to-date: 2.9 million (through July 15, 2025).
- Permits filed since June 1: Over 250,000, with 22,000 filed in July so far.
- Construction: 130,000
- Solar: 125,000
- EV chargers: 10,000
- New contractor phone numbers: Over 35,000 new primary phone numbers have been added.
🚀 Upgrades
- Continued improving contractor classification standardization. As a result, more contractors now have a Shovels-standard classification assigned to the
license_classfield.
- Online
- API
- EDL (Enterprise Data License)
🚀 Upgrades:
- Faster pagination, especially for deeper pages.
- More jurisdiction coverage.
- Online
- API
- EDL (Enterprise Data License)
🚀 Upgrades:
- Improved the Permit Search logic to always order resulting permits by newest first.
- Online
- API
- EDL (Enterprise Data License)
- Online
- API
- EDL (Enterprise Data License)
✨ New:
- Added Website Search filter options to Contractor Filters
- Added tooltips to the UI to better explain functionality
🚀 Upgrades:
- Added Search filter auto-caching to improve UX between page reloads and sessions
- Added new New User onboarding experience
- Adjusted datepicker widget for date range selection to monthly, which will improve usability
- Online
- API
- EDL (Enterprise Data License)
Breaking Changes Policies
Breaking Changes Policies
In order to ensure smooth transitions between updates, we’ve settled on a few short term policies.
- We will do our best to give as much advance warning on breaking changes as possible.
- Some recent breaking changes are delayed updates to the schema that should have been part of the V2 launch. We do not plan on making breaking changes this often.
- Where sensible and possible, we will provide backward compatibility for new endpoints, parameters, and schemas.
Address Coordinate Errors
Address Coordinate Errors
As described under EDL changes above, we found that there were rare cases where the latitude and longitude coordinates were reversed. Affected records have been corrected.We’ve also beefed up our address-geospatial processing to find and fix these errors going forward.
Effective Dates
Effective Dates
- Online: Monday, February 03, 2025.
- API: Monday, February 10, 2025.
- EDL: Wednesday, February 6, 2025.
- Online
- API
- EDL (Enterprise Data License)
Coverage Expansion
Coverage Expansion
These new permits will be available across the entire platform.
✨ New:
- +6M permits nationwide.
- +9 permit jurisdictions.
- Online
- API
- EDL (Enterprise Data License)
Schema Updates
Schema Updates
We made a number of additions to our datasets, including new columns. For breaking changes to casing, see “API” above.
New columns in the 'residents' table:
New columns in the 'residents' table:
personal_emails_validation_status(string): The validation status of the associated personal email. ‘Valid’ indicates a validated email; null means unknown.personal_emails_last_seen(date): The date of the last validation or verification attempt for the personal email. Null if unknown.business_email(string): The primary business email observed for this person.business_email_validation_status(string): Validation status of the business email. ‘Valid’ means the email was validated; null means unknown. May contain values like ‘Valid-ESP’ (validated by email service provider) or ‘Valid-Digital’ (validated by cookie/digital tag).business_email_last_seen(date): The date of the last known validation or verification attempt of the business email. Null if unknown.linkedin_url(string): URL of the person’s LinkedIn profile.homeowner(string): Reports if the person in this record is a homeowner. Y and N are observed values, P represents that they are likely a homeowner, based on probabilistic modeling, and null values represent ‘unknown’.gender(string): The person’s gender.age_range(string): The person’s age mapped to standard demographic ranges.is_married(boolean): Indicates if the person is married.has_children(boolean): Indicates if the person has children.income_range(string): The person’s income range.net_worth(string): The person’s net worth, mapped to standard demographic ranges. Null if unknown.job_title(string): The person’s job title.seniority_level(string): The seniority level of the person’s role.department(string): The department in which the person works.job_title_last_updated(date): The last date the person’s job title was updated.last_updated(date): The last date any value in this record was updated.work_history(string, JSON): A JSON-formatted history of the person’s work experiences (e.g., company name, * position, duration, start/end time, job description, location, social_url).education_history(string): The person’s education background.social_connections(string): The number of social media connections the person has, provided in ranges (e.g., 1-9, 10-49, etc.).company_name(string): The name of the company where the person works.company_domain(string): The company’s domain.company_phone(string): The company’s contact phone number.company_sic(string): The Standard Industrial Classification (SIC) code(s) of the company, separated by semicolons if multiple.company_street_no(string): The street number of the company’s address.company_street(string): The street name of the company’s address.company_city(string): The city in which the company is located.company_zip(string): The company’s 5-digit ZIP code.company_state(string): The uppercase state abbreviation for the company’s address.company_linkedin_url(string): The URL of the company’s LinkedIn profile.company_revenue(string): The company’s revenue, expressed in standard ranges.company_employee_count(string): The number of observed US enterprise employees at the company, provided in * standard firmographic ranges.company_primary_industry(string): The primary industry in which the company operates.company_description(string): A description of the company’s business activities.company_naics(string): The company’s North American Industry Classification System (NAICS) code(s).
New 'employees' table (connected to 'contractors'):
New 'employees' table (connected to 'contractors'):
contractor_id(string)person_id(string)name(string)street_no(string)street(string)city(string)zipcode(string)zipcode_ext(string)state(string)phone(string)email(string)email_validation_status(string)email_last_seen(date)business_email(string)business_email_validation_status(string)business_email_last_seen(date)linkedin_url(string)homeowner(string)gender(string)age_range(string)is_married(boolean)has_children(boolean)income_range(string)net_worth(string)job_title(string)seniority_level(string)department(string)job_title_last_updated(date)work_history(string, JSON formatted)education_history(string)
