US STR Permit Registry & Market Evidence avatar

US STR Permit Registry & Market Evidence

Pricing

from $2.40 / 1,000 results

Go to Apify Store
US STR Permit Registry & Market Evidence

US STR Permit Registry & Market Evidence

Check 1–25 addresses against complete official STR permit queries, export normalized records across 32 US jurisdictions, or reconcile rights-bound market observations. Includes source links, publisher and retrieval clocks, receipts, and opt-in change monitoring; not a legal determination.

Pricing

from $2.40 / 1,000 results

Rating

0.0

(0)

Developer

Bryan

Bryan

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

20 hours ago

Last modified

Share

STR Permit Registry — Reconciled Official Short-Term Rental Evidence

This Actor refines fragmented official government permit, licence, registration, eligibility, address, and parcel data into one source-bound record model. It preserves publisher semantics: an internal row or address identifier stays a source_record_id, never a fabricated permit_id. Complementary official rows are coalesced by stable identity, newest publisher evidence wins, older rows fill only empty fields, and disagreements remain visible conflicts. CivicDataForge differentiates on that custody trail, privacy stripping, honest nulls, complete-scope monitoring where supported, and hash-bound evidence and change receipts for compliance, property diligence, and enforcement research.

One address in, one source-bound answer out

Set outputMode to address_evidence, choose exactly one city, and provide 1-25 addresses. The Actor fetches the complete selected publisher query and returns one row per submitted address:

  • EVIDENCE_FOUND — exact normalized address match in the published source;
  • REVIEW_REQUIRED — invalid input or a plausible non-exact candidate that needs human review;
  • NO_PUBLISHED_MATCH — no exact match in the complete selected publisher query;
  • SCOPE_INCOMPLETE — reserved for bounded-file evaluations, never emitted as a complete-source negative.

Every decision includes the source, observation time, scope completeness, match basis, record fingerprints where present, and a deterministic decision_receipt_hash. A no-published-match result is not proof of illegality, ineligibility, or absence from every authority.

{
"outputMode": "address_evidence",
"cities": ["orlando"],
"addresses": ["1100 Briercliff Drive, Orlando, FL"]
}

Reconcile lawful market observations without importing a competitor

Set outputMode to market_evidence to join independently acquired official, openly licensed, customer-authorized, or contracted market observations to one complete official registry. CivicDataForge does not promote a listing claim into a government permit: the output labels exact permit claims, exact-address evidence, conflicts, ambiguous identities, coordinate-only discovery candidates, and honest no-match results separately.

Every market source must carry a source-rights receipt recording its acquisition method, evidence URL, review clock, and an allowed commercial-use and redistribution basis. review_required and not_allowed fail closed before any customer row is emitted. Host names, owner names, email addresses, phone numbers, payout data, guest data, and messages are rejected at any input depth. URLs containing embedded credentials or secret-bearing query parameters are also rejected instead of being copied into receipts. Google or another search engine may help find an official publisher, but the production source URL and rights evidence must point to the actual publisher or authorized provider.

{
"outputMode": "market_evidence",
"cities": ["orlando"],
"marketSources": [{
"source_id": "customer-pms-export",
"publisher": "Customer-authorized property management system",
"source_url": "https://customer.example/export",
"access_method": "customer_authorized",
"observed_at": "2026-08-25T12:00:00.000Z",
"rights": {
"commercial_use": "allowed",
"redistribution": "allowed",
"basis": "The customer authorized processing and return of its portfolio records.",
"evidence_url": "https://customer.example/authorization",
"reviewed_at": "2026-08-25T12:00:00.000Z",
"asserted_by": "customer"
},
"observations": [{
"reference_id": "property-1",
"platform": "customer-pms",
"listing_id": "listing-1",
"claimed_permit_id": "STR-1118212",
"address": "120 E Hazel Street, Orlando, FL",
"address_precision": "exact",
"observed_at": "2026-08-25T12:00:00.000Z"
}]
}]
}

The Actor fetches the complete selected official registry itself. It accepts the market observations as a rights-bound packet, returns one reconciliation row per observation, and writes a hashed MARKET-EVIDENCE-MANIFEST. Approximate addresses never participate in automatic address matching, and coordinates within 100 metres remain review candidates rather than proof.

32 cities live, all data-layer verified + freshness-gated (updated 2026):

CityStatusOwnerExpirationParcel
Seattle, WA
Orlando, FL
New Orleans, LA
Denver, CO
Chicago, IL
Marin County, CA
Norfolk, VA
Nashville, TN
Osceola County, FL
Polk County, FL
Austin, TX
Houston, TX
Sacramento, CA
San Bernardino County, CA
Bend, OR
Aspen, CO
Philadelphia, PA
Albuquerque, NM
Asheville, NC
Louisville, KY
Arlington, TX
San Diego, CA
Scottsdale, AZ
Huntington Beach, CA
Coconino County, AZ
San Juan County, WA
Chattanooga, TN
Boston, MA
Las Vegas, NV
Kansas City, MO
Washington, DC
Honolulu, HI

Field coverage reflects exactly what each city publishes — never faked; if a city doesn't publish a field it's null.

What you get (unified schema)

fieldexample
permit_idSTR-1118212
source_record_idstable publisher row identity when no public permit number exists
record_kindpublisher-semantic type: permit, licence, eligibility, business licence, or NUC certificate
identifier_kinddistinguishes a real permit/licence number from a source-record identity
statusActive / Inactive / License Issued - Active / Closed
address120 E HAZEL ST, Orlando, FL
owner_or_operatorJOSHUA COLORADO (where published)
parcel0510235019000 (Denver)
property_typeShort Term Rental / Single Family Home
expiration_date2026-08-25
issued_date2025-05-23 (where published)
city / stateOrlando / FL
source_urlthe city open-data endpoint the record came from
evidence_sourcesevery official source that contributed to the reconciled record
field_provenancesource responsible for each normalized field
reconciliation_conflictsdisagreements retained for review, never silently overwritten
source_updated_atpublisher clock where the transport exposes one
source_content_sha256exact content digest for file-based sources
rawfull original record (personal phone/email stripped for privacy)

Records are ordered so current/active permits surface first, and you can filter to active-only.

Who uses this

  • STR analytics & data platforms — join permit legality onto listing data.
  • Compliance vendors & municipalities — enforcement-side address/parcel matching.
  • Property diligence teams — verify whether a property's rental permit is published as active.
  • Researchers and market analysts — study licensed supply and permit-status changes.

Match a property portfolio

Need permit evidence for a list of properties instead of a whole-city export? Start with the CivicDataForge Permit Match Audit. One accepted proof-of-fit matches up to 25 submitted addresses in one supported jurisdiction for $99. The delivered evidence bundle separates exact published matches, human-review candidates, invalid input, and honest no-match findings; it also retains official source links, record fingerprints, and a hash-bound manifest.

The founding 30-day monitoring pilot is $500 for one supported jurisdiction and up to 500 submitted addresses, with a complete baseline, one scheduled comparison, change rows, integrity quarantine, and one buyer-selected handoff design. The $99 audit is credited toward an accepted $500 pilot. A no-match is never presented as proof that a property is illegal or ineligible.

Input

{ "cities": ["orlando"], "status": "active", "maxRecordsPerCity": 25, "snapshot": false }

That bounded example is the safest first run. It returns useful records quickly and writes hashed RUN-RECEIPT and CHANGE-RECEIPT objects alongside the dataset. The run receipt states that the coverage is bounded; it never presents a capped pull as a complete registry.

Complete change monitoring

Monitoring is deliberately stricter than an ordinary lookup. It is opt-in, is stored in a named key-value store inside the calling Apify account, and accepts only complete selected-city pulls:

{
"cities": ["orlando"],
"status": "all",
"maxRecordsPerCity": null,
"resolveJurisdiction": true,
"snapshot": true
}

Run that exact input on a schedule. The first healthy run creates a version-3 baseline. Later runs compare only with a baseline having the same city, status filter, and jurisdiction-resolution setting. A published permit+unit pair remains stable across address corrections. When a publisher reuses one group licence across multiple properties without unit IDs, address remains part of identity so valid properties are not merged. Intraday runs have append-only timestamped keys and cannot overwrite one another.

The change receipt reports appeared, disappeared, status-changed, and other tracked-field changes. Each accepted comparison also stores the complete machine-readable before/after change rows behind the full_changes_key in the receipt. Count collapse, empty results, field loss, or publisher-schema drift quarantines the candidate snapshot: its diagnostic receipt is retained, but it cannot replace the last healthy baseline or become a confirmed customer change feed.

If snapshot is true while maxRecordsPerCity is set, the run fails before fetching data. This is an intentional integrity gate: a capped page is not evidence that records outside the page disappeared. Changing active to all creates a separate baseline instead of producing a false diff.

At pay-per-result pricing, complete pulls can cost materially more than the 25-row example. Start with one jurisdiction, inspect its complete record count and cost, and set an Apify spending limit before scheduling. The limit must cover every record in the selected complete pull. If Apify exposes a paid-dataset ceiling that is lower than the fetched record count, snapshot monitoring fails before storing a new baseline or receipt instead of labeling a platform-truncated dataset complete.

Receipts and automation

  • RUN-RECEIPT binds the selected cities, filters, coverage, counts, monitoring state, and change-receipt hash.
  • CHANGE-RECEIPT says disabled, complete_baseline_created, compared_with_prior_complete_snapshot, integrity_quarantined, or completed_with_quarantined_scopes; it carries summaries plus the keys and hashes of full changes.
  • The named str-registry-history-v3 store retains append-only snapshots, full before/after change rows, and quarantined candidates. Version-2 history is left intact rather than silently reinterpreted.
  • Each receipt contains a canonical SHA-256 so downstream systems can detect alteration.
  • Use Apify schedules for recurrence and webhooks to route the receipt into Slack, email, a database, or a review queue.

Customer-owned case workflow

Address-evidence mode can also set caseWorkflow to true. The Actor then writes a portable CASE-BUNDLE with one case per caller reference. Each case binds the current decision receipt to a hashed subject reference and a hash-chained human-disposition history; the case file does not store the submitted address. Customers retain the bundle in their own system and return applicable priorCases on the next run, avoiding a shared developer-owned property watchlist.

caseActions use optimistic locking and require a reviewer reference, reason, timestamp, expected version, and expected case receipt. Forged or stale writes fail closed. A changed official-source decision automatically reopens a resolved case, preserving the earlier disposition and the complete transition chain instead of silently overwriting it.

Optional webhookUrl and secret webhookSecret inputs deliver the exact bundle to a public HTTPS endpoint using one stable idempotency key, HMAC-SHA256 signing, and up to three attempts. Internal or IP-literal targets, redirects, embedded credentials, and non-HTTPS endpoints are rejected. The redacted WEBHOOK-DELIVERY receipt distinguishes downstream acceptance from transport failure.

The workflow records evidence and human handling; it does not send enforcement letters, collect tax, decide illegality, or replace municipal due process.

Source & legality

Data comes from official municipal open-data portals (published for public reuse), accessed logged-out. Source-change signals are checked every 6 hours; the complete customer file is rebuilt and atomically replaced daily, with a forced all-source reconciliation weekly and a signed archive monthly. A government publisher may update less often, so each record exposes publisher time when observable separately from our fetch time. Personal contact fields (phone/email) are stripped from output; owner name and property address are standard public permit-record fields.

This product is not a consumer report and must not be used to determine an individual's eligibility for credit, insurance, employment, or housing. Hilton Head and Beaufort are not available because South Carolina law restricts commercial-solicitation uses of personal information obtained from public bodies.