Childcare Provider Leads — Daycare Contact Lists + Compliance
Pricing
from $6.60 / 1,000 results
Childcare Provider Leads — Daycare Contact Lists + Compliance
Licensed childcare provider lead lists from official state licensing data with direct phone AND email contacts (Texas HHSC). Filter by county, type, capacity, ages served; each lead scored with 2-year deficiency counts + high-risk flag. Delta mode alerts on newly licensed operations.
Pricing
from $6.60 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Childcare Provider Leads - Daycare Contact Lists + Compliance
A licensed childcare provider lead list with a compliance record attached, built on the Texas HHSC Child Care Licensing open data. One row per operation: name, physical and mailing address, phone, email, website, the named administrator/director, licensed capacity, ages served, hours, and the operation's full published deficiency and enforcement history.
Keyless Socrata sources. No login, no API key, no anti-bot games.
Contact-field population - measured, not assumed
Measured live on 2026-08-01 across the entire active Texas roster (n = 14,937):
| Field | Populated |
|---|---|
phone | 99.6% |
address / city / county / zip | 99.1% |
mailing_address | 99.1% |
administrator_director_name | 69.1% |
email | 56.6% |
website | 37.8% |
capacity | 99.0% |
Email is on a little over half the roster. That is the honest number and it is why every row also carries has_phone, has_email, has_named_contact and a contact_channels array - so you can filter to genuinely reachable leads before you export, rather than discovering the gap afterwards. Texas publishes no email for the other 43.4%; no actor can invent one.
What changed in v1.1 (2026-08-01)
high_risk_flag used to say false on operations that were never checked. In v1.0 the flag was initialised false and left there whenever includeCompliance was off or the non-compliance join threw - a billable row asserting that a childcare operation is not high-risk on a check that never ran. It is now null unless the join actually answered for that specific operation, and violations_status says which.
The compliance data was there all along and was being thrown away. The HHSC roster record publishes its own deficiency counts by risk level (deficiency_high, deficiency_medium_high, deficiency_medium, deficiency_medium_low, deficiency_low), plus total_inspections, total_assessments, total_reports, total_self_reports, and the corrective_action / adverse_action / temporarily_closed enforcement flags. v1.0 fetched every one of those columns on every row and emitted none of them, then spent an extra request per 50 operations computing a partial 2-year version instead. Verified live: operation 97587's roster counts sum to 214 and the non-compliance table holds exactly 214 rows for it; 1311197 = 188/188; 290772 = 123/123. All of it now ships, which means the risk signal survives even when the optional join is off or down.
minCapacity was deleting an entire category. v1.0 read an unpublished capacity as 0, so any minCapacity filter silently dropped every operation Texas publishes no capacity for - 141 of the 236 Child Placing Agencies in the state (59.7%). Unknown capacity is now kept and marked.
"New operations" mode never returned a new operation. The baseline lived in the run's default key-value store, which Apify recreates for every run, so every run saw an empty baseline, declared itself the first one, and re-emitted the whole roster. It now uses a named, filter-scoped store.
Also: administrator_director_name and mailing_address are emitted, the roster page cap follows maxResults instead of stopping at 10,000, roster paging carries a stable tiebreaker, accepts_subsidies and the YES/NO columns are tri-state, and the run fails loudly before billing if the upstream drifts.
Who it is for
- Sales & marketing teams selling into childcare: curriculum, food service, insurance, staffing, POS, cleaning, playground equipment. Filter on
contact_channels,capacityandoperation_type. - Franchise and M&A scouts sizing a market by county, capacity and permit type.
- Parents, brokers and referral services who need the compliance record next to the contact details.
- Researchers and journalists studying childcare supply, subsidy acceptance and enforcement.
Example input
{"state": "TX","county": "Harris","operationType": "Licensed Center","maxResults": 100,"includeCompliance": true,"highRiskThreshold": 10}
Output fields
Every field below is emitted on every row. null always means not checked - never "checked and negative".
| Field | Description |
|---|---|
state | US state of the licensing registry (v1: TX). |
operation_id | Internal licensing operation ID (join key to state non-compliance records). |
operation_number | Public operation/license number. |
operation_name | Name of the childcare operation. |
operation_type | License type, e.g. Licensed Center, Registered Child-Care Home, Listed Family Home. |
address | Street address of the operation location. |
city | City of the operation location. |
county | County of the operation location. |
zip | 5-digit ZIP code. |
phone | Provider phone number. Populated on 99.6% of the active TX roster. |
email | Provider email address. Populated on 56.6% of the active TX roster - the sparsest contact field. Use has_email or contact_channels to filter to reachable leads. |
website | Provider website when on file. |
capacity | Total licensed capacity. NULL when TX does not publish one - see capacity_known. Never coerced to 0. |
ages_served | Licensed-to-serve age groups. |
programs_provided | Programs offered (e.g. drop-in care, meals, part-time). |
accepts_subsidies | True when the operation accepts child-care subsidies (Y/N as published; 6,038 Y of 14,983). NULL when the column is absent rather than false. |
issuance_date | License/permit issuance date (YYYY-MM-DD). |
deficiency_count_2y | Number of non-compliance records for this operation inside the 2-year window. IMPORTANT: the window keys off corrected_date, so this counts deficiencies CORRECTED in the last two years, not cited - the TX table publishes no citation date. NULL when the join did not answer; 0 means it answered and found none. |
deficiency_weighted_score_2y | Risk-weighted 2-year score (High 5, Medium High 3, Medium 2, Medium Low 1, Low 0.5) - an editorial weighting, not an HHSC measure. NULL when the join did not answer. |
recent_deficiency_dates | Up to three most recent correction dates inside the window. NULL (not an empty array) when the non-compliance join did not answer - see violations_status. |
high_risk_flag | True when deficiency_weighted_score_2y meets or exceeds highRiskThreshold. NULL when the non-compliance join did not run or did not answer for this operation - v1.0 emitted false in that case, asserting a childcare operation was not high-risk on a check it never performed. Use high_risk_flag_lifetime for a signal that is always available. |
is_new_operation | True when the operation was absent from the previous run baseline for this filter scope. NULL on a seeding run (nothing has been compared yet) and in roster mode. |
source_url | Official source dataset URL. |
administrator_director_name | Named decision-maker at the operation, as published by TX HHSC. Populated on 69.1% of the active roster. v1.0 fetched this column and discarded it. |
mailing_address | Operation mailing address (99.1% populated). Often differs from the physical address for home-based and multi-site operators. |
location_address | Physical location address as published (99.1% populated). |
hours_of_operation | Published operating hours. |
days_of_operation | Published operating days (97.6% populated). |
care_type | HHSC care-type classification (66.6% populated; TX leaves it blank for the rest). |
contact_channels | Which contactable channels this row actually carries: any of "phone", "email", "website", "named_contact". Lets you filter to genuinely reachable leads instead of discovering the gap after export. |
has_phone | True when a phone number is published. 99.6% of the active roster. |
has_email | True when an email address is published. Only 56.6% of the active roster carries one - this is the sparsest contact field and is stated rather than implied. |
has_named_contact | True when administrator_director_name is published (69.1%). |
operation_status | Raw HHSC operation_status: "Y" active, "N" inactive. |
is_active | operation_status decoded. Null when HHSC publishes no status. |
type_of_issuance | Permit type: Full Permit, Registered, Listed, Initial, Certified, Renewed Initial. |
conditions_on_permit | True when HHSC has attached conditions to the permit (1,502 of 14,983 statewide). Null when not published. |
deficiency_high_total | HHSC-published count of High-risk deficiencies for this operation, straight from the roster record. |
deficiency_medium_high_total | HHSC-published Medium High deficiency count. |
deficiency_medium_total | HHSC-published Medium deficiency count. |
deficiency_medium_low_total | HHSC-published Medium Low deficiency count. |
deficiency_low_total | HHSC-published Low deficiency count. |
deficiency_count_total | Sum of the five HHSC-published deficiency counts. Verified live against the non-compliance table: operation 97587 sums to 214 and the table holds exactly 214 rows. Null only when HHSC publishes none of the five columns. |
deficiency_weighted_score_total | The same editorial weighting as deficiency_weighted_score_2y (High 5, Medium High 3, Medium 2, Medium Low 1, Low 0.5) applied to the HHSC lifetime counts. Available on every row without the optional join. |
total_inspections | HHSC-published inspection count for the operation. |
total_assessments | HHSC-published assessment count. |
total_reports | HHSC-published investigation/report count. |
total_self_reports | HHSC-published self-report count. |
corrective_action | True when HHSC has an open corrective action against the operation (31 of 14,983 statewide). Null when not published. |
adverse_action | True when HHSC has taken adverse action (31 of 14,983 statewide). Null when not published. |
temporarily_closed | True when the operation is temporarily closed (10 of 14,983 statewide). Null when not published. |
open_foster_homes | For child-placing agencies: number of open foster homes. |
open_branch_offices | Number of open branch offices. |
programmatic_services | Programmatic services text (4.1% populated - residential operations only). |
treatment_services | Treatment services text (3.4% populated - residential operations only). |
roster_status | "ok" when the HHSC roster record for this operation was retrieved. |
violations_status | "ok" (the 2-year non-compliance join answered for this operation), "unavailable" (its batch failed or was truncated) or "not_requested" (includeCompliance was false). When it is not "ok", deficiency_count_2y and high_risk_flag are NULL rather than 0/false. |
compliance_window_basis | Exactly what the 2-year window measured. The TX non-compliance table has NO citation or inspection date, so the window keys off corrected_date - the date the deficiency was CORRECTED, not cited. Null when the join did not run. |
capacity_known | False when TX publishes no total_capacity for the operation (142 of 14,937 active, 141 of them Child Placing Agencies). |
capacity_filter_applied | "not_applied", "passed", or "kept_unknown_capacity" - the last meaning a minCapacity filter was set and this row was kept because its capacity is unpublished, not because it met the threshold. v1.0 silently deleted these rows. |
high_risk_flag_lifetime | deficiency_weighted_score_total at or above highRiskThreshold. Derived from HHSC-published counts, so it is available even when the optional 2-year join is off or fails. Null only when HHSC publishes no deficiency counts. |
enforcement_flag | True when any of corrective_action, adverse_action or temporarily_closed is set. Null when none of the three is published. |
deficiencies_corrected_at_inspection_2y | How many of the windowed deficiencies were corrected on the spot at inspection (10.7% of the table statewide) - a lower-severity signal than one requiring a later correction. Null when the join did not answer. |
delta_baseline_status | "ok" (a real cross-run baseline was loaded), "seeded_this_run" (first run for this filter scope; nothing has been compared yet) or "not_applicable" (roster mode). |
run_mode | "roster" or "new_operations". |
Data sources (Texas HHSC, keyless Socrata)
- HHSC CCL Daycare and Residential Operations Data (
bc5r-88dy) - 14,983 operations, 14,937 active. Refreshed daily; newest permit issuance was 1 day old when measured. - HHSC CCL Non-Compliance Data (
tqgd-mf4x) - 138,974 deficiency records, joined onoperation_id.
Live drift assertions
The actor checks the upstream before producing a single billable row, and fails the run loudly if any of these regress:
- both datasets resolve and still publish every column the actor reads (including
deficiency_highandadministrator_director_name) - a negative control (
county = 'ZZZZ_NOT_A_REAL_COUNTY') returns exactly 0 rows - proof the$whereclause is being applied - closed vocabularies:
standard_risk_levelstays inside {High, Medium High, Medium, Medium Low, Low};operation_statusinside {Y, N};corrective_action/adverse_action/temporarily_closedinside {YES, NO}. An unrecognised risk level would otherwise be silently scored 1 - dataset sizes stay inside measured bands (roster 8k-40k against 14,983; non-compliance 50k-500k against 138,974)
- the newest permit issuance is within 180 days (measured: 1 day)
Every measured value is written to the run log, so tightening a band later is evidence-based.
Use as an MCP tool
Callable by AI agents (Claude, Cursor, etc.) via mcp.apify.com. The violations_status and contact_channels fields let an agent tell a verified negative from an unanswered question, and a reachable lead from an unreachable one.
Honest notes & limitations
- Texas only in v1. Florida DCF and California CCLD have no verified keyless machine endpoint; they are scaffolded and disabled rather than faked.
- The 2-year window measures corrections, not citations. The TX non-compliance table publishes no citation or inspection date.
corrected_dateis the only usable timestamp, sodeficiency_count_2ycounts deficiencies corrected in the last two years. Every row states this incompliance_window_basis. Measured live:corrected_dateis populated on 138,974 of 138,974 rows, and a 2-year window covers 43.0% of the table - the rest are older corrections, not uncorrected violations. For a citation-anchored view use the HHSC lifetime counts (deficiency_count_total). - The risk weighting is editorial. High 5, Medium High 3, Medium 2, Medium Low 1, Low 0.5 is this actor's scale, not an HHSC measure.
deficiency_high_totaland friends are the raw HHSC numbers if you would rather weight them yourself. - Deficiency counts are not a quality verdict. A large centre inspected 91 times will out-score a small home inspected twice. Read
total_inspectionsalongside the counts. temporarily_closed,corrective_actionandadverse_actionare rare (10, 31 and 31 operations statewide) - which is exactly what makes them worth filtering on.- No emails for 43.4% of the roster. See the table at the top.
FAQ
How do I get only leads I can actually email?
Filter has_email = true, or contact_channels containing "email". That is 56.6% of the active roster statewide.
How do I reach a decision-maker rather than a front desk?
administrator_director_name carries the named administrator or director on 69.1% of operations; combine with has_named_contact = true.
Why is high_risk_flag sometimes null?
Because the actor did not check. null means the non-compliance join did not run (you set includeCompliance: false) or did not answer for that operation; false means it ran and the score was under your threshold. violations_status tells you which. high_risk_flag_lifetime is derived from HHSC's own published counts and is available either way.
Which risk score should I use?
deficiency_count_total / high_risk_flag_lifetime for a complete, always-available picture, and deficiency_count_2y / high_risk_flag when recency matters more than completeness.
How do I get alerts for newly licensed daycares?
Set mode to new_operations and schedule the actor. The first run for a given filter combination seeds a baseline and emits the full roster with is_new_operation: null; every later run emits only operations that were absent from the baseline.
Does a minimum capacity filter drop anything unexpected?
Only in the sense that it keeps more than you might expect: operations with no published capacity are retained and marked kept_unknown_capacity rather than treated as capacity 0.
Pricing
Pay per result: you are charged only for the provider records actually emitted. A run that fails a drift assertion emits nothing and bills nothing.
Related actors
| Actor | What it adds |
|---|---|
| License Verifier | Professional-licence verification across 19 boards in 9 states |
| City Business License Leads | Newly licensed businesses by city, for the same outbound motion |
| Liquor License New Openings Tracker | New TX / NY / FL licence applications as an opening signal |
Verified inputs that populate every field
A few fields are legitimately null on a typical daycare run because Texas only publishes them for certain operation types. Each has a verified live input, so nothing here is a permanently empty column:
| Field | Null on the default run because | Input that populates it (verified live 2026-08-01) |
|---|---|---|
programmatic_services, treatment_services | Residential operations only (4.1% / 3.4% of the roster) | {"operationType": "General Residential Operation"} - 25/25 rows populated, e.g. "Child Care" / "Emotional Disorders" |
is_new_operation | Roster mode never compares against a baseline | {"mode": "new_operations"} on the second run for a filter scope |
deficiency_count_2y, high_risk_flag, recent_deficiency_dates | includeCompliance was false, or the join did not answer | {"includeCompliance": true} - and violations_status says which case you are in |
open_foster_homes | Only meaningful for child-placing and residential operations | {"operationType": "Child Placing Agency"} |
Measured on the actor's own default input (Harris County, Licensed Center, 100 rows): phone 99%, administrator_director_name 77%, email 44%, website 29%. Harris County licensed centers publish email less often than the statewide average of 56.6% - both numbers are given so neither is a surprise.