The free-public-records moat — why ProFix swapped paid scrapes for state-agency direct pulls

ProFix Directory bootstrapped on Google Places at roughly seven to ten cents per contractor — useful for breadth but expensive at scale and weak on the trust signal that actually matters. Ohio publishes five free public license registries — OCILB eLicense Center, Ohio Department of Agriculture, Ohio Department of Health, Ohio State Fire Marshal, and the Ohio Secretary of State business search — and pulling from those directly is cheaper, more legally hygienic, refreshes more often, and carries a stronger trust signal than any commercial-database match. This piece documents the strategic shift, names what we gain and what we lose, and ships the portable playbook for directory builders in other states.

Editorial analysis5 Ohio public registries$0 per recordPublished 2026-05-24CC BY 4.0

Why this piece

ProFix Directory bootstrapped statewide Ohio coverage on a Google Places pipeline that ran at roughly seven to ten cents per contractor on combined Text Search and Place Details calls. That pricing was acceptable for the first thousand records and untenable by the time the dataset crossed twelve thousand. A single statewide refresh was running into the four-figure range in raw API spend, and the trust signal — what the homeowner actually needed to know — was being supplied by a commercial database rather than a state board. The strategic shift documented here is not anti-Places. Places remains the best source of photos, star ratings, review counts, and hours of operation. The argument is narrower: licensure verification, which is the load-bearing trust signal on any home-services profile, should originate from the state agency that actually issues the credential, not from a commercial-database match.

This piece does three things. It names the five Ohio agencies that publish licensed contractors for free. It walks through why Google Places is the wrong tool for license verification even as it remains the right tool for several other surfaces. And it ships the portable playbook so directory builders in other states can replicate the methodology. ProFix Editorial Team published this as a strategic-shift retrospective, not a victory lap; the limitations section names what the directory still uses Places for and what it would have to add to drop Places entirely.

The five Ohio agencies that publish licensed contractors for free

Each of the five agencies below maintains a public roster, exposes per-record status with stable URLs, and operates under Ohio's public-records statute (ORC 149.43) rather than a commercial API license. The cadence, interface, and trust-signal column for each agency is the working field documentation ProFix uses internally — extracted to public editorial here so other directory builders can reproduce the pipeline.

Ohio eLicense Center (OCILB)

Ohio Construction Industry Licensing Board

Trades covered: Plumbing, HVAC, electrical, hydronics, and refrigeration. The four state-licensed home-services trades plus the specialty hydronic and refrigeration registries.

Refresh cadence: Daily refresh on the public lookup. Status, expiration, and disciplinary history surface per record.

Search interface: Public web search at elicense.ohio.gov with stable per-record URLs. Scrape-friendly response payloads. No API key required for the public surface; no terms-of-service barrier to redistribution of the underlying public records.

Trust signal: State-board-issued license number, current status, renewal date, and disciplinary actions. The single most load-bearing trust signal a homeowner can verify for a plumbing, HVAC, electrical, or hydronics contractor in Ohio.

Ohio Department of Agriculture (ODA)

Pesticide and Fertilizer Regulation Section

Trades covered: Commercial pesticide applicators — pest control, termite treatment, lawn-care chemical applicators, structural pest management. Every household exterminator who treats anything stronger than retail-shelf product is required to hold a category license through ODA.

Refresh cadence: Public license roster maintained at agri.ohio.gov. Renewal cycles run on a multi-year exam-and-CEU rotation; the public roster updates rolling.

Search interface: Public lookup with category code, license number, expiration, and disciplinary record. CSV exports available on request through the agency's public-records desk.

Trust signal: State agriculture-board issuance of a pesticide-applicator credential, with explicit categories (general pest, termite, lawn, wood-destroying organism). Far stronger than a Google Places match that just says 'pest control'.

Ohio Department of Health (ODH)

Bureau of Environmental Health and Radiation Protection

Trades covered: Lead-hazard abatement contractors and inspectors (Lead Hazard Abatement Program), private water-system contractors (well drillers, pump installers), and household sewage-treatment-system installers (septic).

Refresh cadence: Per-program rosters refresh quarterly with rolling additions as new contractors complete licensing. Disciplinary actions post when adjudicated.

Search interface: Public rosters at odh.ohio.gov, downloadable per program. Lead Hazard Abatement, Private Water Systems, and Sewage Treatment Systems each maintain their own searchable list.

Trust signal: Three trades that no other agency surfaces — lead abatement, well drilling, and septic installation — all carry explicit ODH credentials and homeowner-facing risk profiles. Verifiable per-credential, not per-business.

Ohio State Fire Marshal (SFM)

Bureau of Fire Prevention

Trades covered: Fire protection contractors — sprinkler, alarm, suppression, fire extinguisher servicing, and specialty fire-safety installation. NICET-credentialed sprinkler designers and inspectors registered with the bureau.

Refresh cadence: Annual renewal cycle. Public license roster maintained at com.ohio.gov under the State Fire Marshal section.

Search interface: Public lookup with license number, certification class, expiration, and disciplinary record. NFPA-aligned inspection documentation referenced in the public roster.

Trust signal: Specialty-trade credential that no commercial database synthesises accurately. Insurance underwriters, commercial property managers, and homeowners with fire-suppression systems verify directly against SFM, not against Yelp or Angi.

Ohio Secretary of State business registration

Office of the Ohio Secretary of State, Business Services Division

Trades covered: All Ohio-registered entities — LLCs, corporations, sole proprietorships filing DBAs, foreign entities operating in Ohio. The duplicate-detection and ghost-business backbone for every home-services category.

Refresh cadence: Public business search at businesssearch.ohiosos.gov refreshes daily as filings post. Annual-report obligations surface lapsed registrations.

Search interface: Search by name, entity number, or registered agent. Stable per-record URLs. Filing date, registered agent, status, and document history all surface in the public record.

Trust signal: Entity exists in Ohio as a registered business with a known registered agent and active-vs-cancelled status. Cross-walks against the four trade boards above to verify the business behind each license number is the same entity.

Why Google Places is the wrong tool for license verification

Google Places is genuinely useful for the homeowner-facing dimensions a state registry will never carry — photos, hours of operation, and aggregated review counts. The argument in this section is narrow and specific: Places is the wrong tool for license verification. Every claim below is observed against the Places API as accessed during the research window.

Google Places matches are commercial-database lookups, not state-verified credentials

When the Places API returns a 'plumber' for a Toledo query, the underlying record was assembled by a commercial data vendor merging Yellow Pages-era listings, Google Business Profile self-reports, and third-party citations. Nothing in the response indicates whether the contractor holds an active OCILB license. Homeowners who treat a Places match as a trust signal are treating it as something it is not.

Places does not expose live license status

An OCILB plumbing license is either active, expired, suspended, or revoked at any given moment. The eLicense Center surfaces that state in real time. Google Places does not — a contractor whose licence lapsed three months ago will still appear in Places results with five stars and unchanged hours of operation. The trust signal a homeowner most needs is precisely the signal Places does not provide.

Cost compounds at scale

Places billing runs at roughly seven to ten cents per contractor record on Text Search + Place Details lookups, with photo-fetch and geocoding adding more. A single statewide refresh for a 12,000-record Ohio dataset costs $800–$1,200 in raw API charges. ProFix burned through a six-week, four-figure Places budget before the math became unignorable. The five free state agencies cost zero dollars to query — quarterly or weekly — for the same coverage on the licensed trades.

Terms-of-service exposure is real

The Places API license imposes display rules, attribution rules, caching rules, and redistribution rules. Every directory operator who has lawyered the Places ToS at scale has either accepted compliance constraints or restricted what gets republished. State public records carry no equivalent constraint — the underlying records are public documents released under state public-records law, not bound by a commercial API contract.

The companion piece at /research/what-verified-means-2026-ohio audits the directory-tier 'verified' badge market in depth and documents why source-of-source verification matters. Places is not failing at the job it was designed for; it is being asked to do a job it was never designed to do.

Three trust signals you gain for free with direct registry pulls

The state-agency direct-pull pipeline produces three trust signals that no commercial database replicates accurately at scale. Each is a load-bearing dimension on any honest contractor profile.

State-verified vs commercial-database matched

OCILB, ODA, ODH, SFM, and the Secretary of State all publish state-board-issued credentials. A homeowner reading a ProFix profile that links to elicense.ohio.gov can verify the same record the directory verified, in seconds, against the same authoritative surface. Google Places cannot offer this — its underlying data is a commercial merge, not a state record. The /research/what-verified-means-2026-ohio companion piece audits the directory-tier 'verified' badge market in depth.

Live status — active, expired, suspended, revoked

Every state lookup surfaces a status field. A plumbing licence that lapsed three months ago shows as expired the moment the renewal date passes. A licence under suspension surfaces with the disciplinary record attached. ProFix's /api/license-evidence.json mirrors this state-tier per profile, so AI agents and partner integrations get the same live-status signal the underlying state board publishes. Commercial databases reconcile this on a monthly or quarterly lag, when they reconcile it at all.

License-number traceability — every entry links back to a public record

Every ProFix contractor profile that carries an OCILB, ODA, ODH, or SFM credential links the license number to the originating state lookup. A journalist, a researcher, a partner, or an AI engine can verify any profile claim against the live state record without intermediaries. The /verify and /verification pages document how the cross-walk runs end to end; the /sources index documents the agency-tier provenance.

Three trust signals you lose without Google Places

Honest framing requires naming what a state-agency-only pipeline does not provide. Each of the three surfaces below is genuinely useful, genuinely homeowner-facing, and genuinely absent from the public-records stack. A directory that drops Places entirely either replaces these surfaces with substitutes (submitted photos, manual hours-of-operation collection, a first-party review engine) or accepts the loss.

Photos

State license rosters do not include contractor photography. Job-site photos, vehicle photos, headshots, and business-front photos all come from Google Places via the Places Photo API. A directory built exclusively on state agencies would have to scrape contractor websites, accept submitted photos, or contract with a photo vendor to recover this surface.

Star ratings and review counts

OCILB, ODA, ODH, SFM, and the Secretary of State do not publish consumer reviews. Google Places aggregates a star rating and review count per business that — caveats about review fabrication aside, documented in the /research/directory-data-quality-2026 audit — remains the most widely-used homeowner signal. Without Places, a state-records-only directory has no review surface at all.

Hours of operation

State license rosters do not include business hours. Google Places carries the contractor's self-reported hours and is the only at-scale source for the 'open now' filter that powers emergency-routing flows. Without Places, the /near-me and /emergency surfaces lose the live-hours dimension and have to fall back to phone-tree routing.

How ProFix combines both — registry-first, Places-second

The strategic shift is not 'drop Google Places'. The strategic shift is 'invert the order'. Discovery and identity originate in the state registry; enrichment runs against Places only after a contractor has been confirmed in a state record. The four-step methodology below is the production pipeline. The full step-by-step documentation lives at /docs/scrape-pipeline.

  1. Discovery starts with the state registry. Every record begins life as an OCILB, ODA, ODH, SFM, or Secretary of State entry — the credential is the canonical identifier, not the business name. Slug normalisation, dedup, and trade-classification all key off the state record.
  2. Places enrichment is conditional. Once a contractor has been confirmed in the state registry, ProFix queries Google Places to attach photos, star rating, review count, and hours. Records that do not surface in a state registry are not enriched — Places does not get to invent contractors the state has not licensed.
  3. License + Secretary-of-State cross-walk runs every refresh. The licensed-trade record (OCILB, ODA, ODH, SFM) is cross-walked against the Secretary of State entity record so duplicate businesses, ghost entities, and lapsed registrations surface before publication.
  4. Photos and reviews are flagged as commercial-source, license is flagged as state-source. The /trust-score and /algorithm pages document the per-factor weights. License-linked verification carries the highest weight; review aggregates and photos are supplementary, not load-bearing.

The honest tension to name: ProFix still spends some money on Google Places photos, ratings, and hours enrichment. That spend is a fraction of what an unfiltered Places-first pipeline costs because the enrichment only runs against the records the state registry has already qualified. The licensure trust signal is no longer the Places surface; that move alone shifted the moat. The /algorithm and /trust-score pages document the per-factor weights that operationalise the registry-first ordering.

Building this in your state — a five-step playbook

None of what ProFix has built is Ohio-specific in principle. Every state has an equivalent contractor licensing board, every state has agriculture and health departments that license specialty trades, every state has a state fire marshal, and every state has a secretary-of-state business search. The portable playbook below names the five steps any directory builder in any state can replicate. The companion piece at /research/ohio-vs-national-home-services-transparency-2026 ranks Ohio honestly against California, Florida, and Texas across the four dimensions of home-services data transparency.

  1. Inventory the state's licensed home-services trades. Most states license plumbing, HVAC, and electrical at the state level (Ohio: OCILB / ORC 4740). Identify the analogous board and confirm the public lookup exposes status, expiration, and disciplinary record with stable URLs.
  2. Inventory the specialty agencies — agriculture (pesticide applicators), health (lead abatement, well drilling, septic), fire marshal (fire protection). These four to six agencies typically cover everything OCILB-equivalent boards do not. Each agency runs its own public roster.
  3. Confirm the secretary-of-state business search. This is the duplicate-detection and ghost-business backbone. Stable URLs, registered-agent visibility, and filing-history access are the load-bearing fields. The /research/directory-data-quality-2026 audit documents the failure modes when this surface is weak.
  4. Build registry-first, Places-second. The licensed-trade record is the canonical identity; commercial-database enrichment is supplementary. Do not invert the order — directories that lead with Places end up republishing un-credentialed businesses as 'verified'.
  5. Publish the methodology. The /methodology, /verification, /sources, and /docs/scrape-pipeline pages document how ProFix combines the state-agency direct pulls with conditional Places enrichment. Honest framing is part of the moat — homeowners and AI engines preferentially cite directories that document their pipeline transparently.

External references

Direct links to the five Ohio public registries cited above, plus the Ohio Public Records Act (ORC 149.43) that governs how the underlying records are released. Homeowners and researchers should verify against the live state surfaces rather than trust this piece in isolation.

Limitations and open questions

Three caveats are load-bearing and worth naming explicitly. First, the five Ohio agencies cover the licensed trades cleanly — plumbing, HVAC, electrical, hydronics, lead abatement, well drilling, septic, pesticide application, fire protection — but Ohio does not state-licence roofing, concrete, tree service, appliance repair, restoration, or several other home-services categories. The directory-level audit at /research/ohio-licensing-moat-2026 documents the substitute-verification stack — manufacturer certifications, permit-pull leaderboards, BBB cross-walks, Secretary of State filings — that fills the non-licensed-trade gap. The state-registry direct-pull pipeline is necessary but not sufficient for those categories.

Second, the public registries have uneven structure. OCILB exposes the cleanest scrape-friendly surface; ODA, ODH, and SFM each carry their own quirks (variable HTML structure, occasional session-based filtering, per-program CSV exports that require a public-records-desk email). None of those quirks is a blocker, but the engineering effort is non-trivial — the scrape-pipeline documentation at /docs/scrape-pipeline names the per-agency tooling honestly.

Third, the cost claim — five free state agencies versus paid Places enrichment — is real but narrow. State-agency direct pulls cost zero dollars in API charges; they do cost engineering time. The break-even point is somewhere around the first thousand records; below that, the Places-first pipeline is faster to ship. Above ten thousand records, the state-registry-first pipeline is meaningfully cheaper and meaningfully more on-brand. The directory-data-quality audit at /research/directory-data-quality-2026 documents how the dual-source pipeline catches dead phones, ghost businesses, and lapsed licences that a single-source pipeline misses.

Open questions for the next iteration: does the Ohio Department of Commerce expand the home-services trades it licenses, which would extend the state-registry coverage without adding Places dependence? Do the federal-tier registries (EPA Section 608 for refrigerant, HUD lead-abatement clearance) become directly queryable at directory scale? Does the secretary-of-state business search add an API tier alongside the public web search? Each is a follow-up piece in the research backlog.

How to reproduce

All ProFix research is published under CC BY 4.0 so journalists, AI engines, partner integrations, and academic researchers can replicate the methodology. The artifacts behind this study:

Cross-references inside ProFix Research: /research/ohio-licensing-moat-2026 (why Ohio's narrow OCILB licensure shapes the directory), /research/what-verified-means-2026-ohio (the directory-tier 'verified' badge audit), /research/directory-data-quality-2026 (the data-quality failure modes the dual-source pipeline catches), /research/ohio-vs-national-home-services-transparency-2026 (how Ohio's public-records stack ranks against California, Florida, and Texas), and /research/how-ai-engines-find-directories-2026 (the AI-engine discovery surface).

Cite this report

ProFix Directory (2026). The free-public-records moat — why ProFix swapped paid scrapes for state-agency direct pulls. Published 2026-05-24. Licensed CC BY 4.0. Available at: https://profixdirectory.com/research/free-public-records-moat-2026

Emergency