US County & City Unclaimed Funds Scraper
Search unclaimed money and uncashed checks published by US county and city treasuries across six states. Search by owner name or browse by state, with amount, holder, property type and dates where disclosed.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | search: find records by owner name or property ID. browse: list a register without a name filter. byPropertyId: exact property/warrant/check lookup. |
state | string | required | Which state's unclaimed-property source(s) to query. 'All states' fans out to every supported source in one run. |
jurisdiction | string | optional | Narrow to one specific government source (useful when a state has more than one, e.g. California or Massachusetts). 'All jurisdictions' queries every source in the selected state(s). |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | search: find records by owner name or property ID. browse: list a register without a name filter. byPropertyId: exact property/warrant/check lookup. |
state | string | required | Which state's unclaimed-property source(s) to query. 'All states' fans out to every supported source in one run. |
jurisdiction | string | optional | Narrow to one specific government source (useful when a state has more than one, e.g. California or Massachusetts). 'All jurisdictions' queries every source in the selected state(s). |
ownerName | string | optional | Full or partial owner/payee name (case-insensitive). Words can be in any order and commas are ignored, so `Smith, John` and `John Smith` both work. |
propertyId | string | optional | Exact property ID, warrant number or check number. Works in every mode; `byPropertyId` is the dedicated lookup mode. |
minAmountUsd | number | optional | Only include records worth at least this much. 0 = no minimum. When an amount filter is active, records whose source discloses no amount are excluded unless `includeUnknownAmount` is on. |
maxAmountUsd | number | optional | Only include records worth at most this much. Leave unset for no maximum. |
includeUnknownAmount | boolean | optional | When an amount filter is active, also keep records whose source publishes no dollar amount (for example City of Austin, TX). |
dateFrom | string | optional | Earliest check/warrant issue date (YYYY-MM-DD). Only sources that disclose dates are searched; California's statewide file has no date field and is skipped. |
dateTo | string | optional | Latest check/warrant issue date, inclusive (YYYY-MM-DD). |
propertyType | string | optional | Broad property-type group. California's 190 raw NAUPA codes are mapped into these groups; use `propertyTypeContains` for an exact raw-string filter. |
propertyTypeContains | string | optional | Advanced: keep only records whose raw source type contains this text, e.g. `Dividend` or `Endowment`. Combined with the group filter. |
sortBy | string | optional | How to order results. `relevance` preserves source and file order. Records missing the chosen field sink to the bottom. |
maxItems | integer | optional | Hard cap on emitted records (1–50,000). |
valueRange | string | optional | Which California State Controller archive to scan for browsing and name searches. Exact property-ID lookups scan all four ranges (smallest first) so lower balances are not missed, then stop at the matching range. `All value ranges` scans four range files one at a time and is much heavier than the default. |
iaFiscalYear | string | optional | Which Iowa DAS outdated-warrant file(s) to read. `Latest` is the newest posted fiscal year. |
Download the published input schema
View complete JSON
{
"description": "Search unclaimed money and uncashed checks by owner name or property ID, or browse a state's public register. Sources include California and Iowa statewide files plus municipal open-data registers.",
"properties": {
"dateFrom": {
"description": "Earliest check/warrant issue date (YYYY-MM-DD). Only sources that disclose dates are searched; California's statewide file has no date field and is skipped.",
"editor": "textfield",
"title": "Date from",
"type": "string"
},
"dateTo": {
"description": "Latest check/warrant issue date, inclusive (YYYY-MM-DD).",
"editor": "textfield",
"title": "Date to",
"type": "string"
},
"iaFiscalYear": {
"default": "latest",
"description": "Which Iowa DAS outdated-warrant file(s) to read. `Latest` is the newest posted fiscal year.",
"editor": "select",
"enum": [
"latest",
"all",
"2027",
"2026",
"2025",
"2024",
"2023",
"2022"
],
"enumTitles": [
"Latest posted fiscal year",
"All fiscal years",
"FY2027",
"FY2026",
"FY2025",
"FY2024",
"FY2023",
"FY2022"
],
"prefill": "latest",
"title": "Iowa fiscal year",
"type": "string"
},
"includeUnknownAmount": {
"default": false,
"description": "When an amount filter is active, also keep records whose source publishes no dollar amount (for example City of Austin, TX).",
"prefill": false,
"title": "Include records with no disclosed amount",
"type": "boolean"
},
"jurisdiction": {
"default": "ALL",
"description": "Narrow to one specific government source (useful when a state has more than one, e.g. California or Massachusetts). 'All jurisdictions' queries every source in the selected state(s).",
"editor": "select",
"enum": [
"ALL",
"tx_austin",
"tx_corpuschristi",
"ri_providence",
"ca_marin",
"ca_roseville",
"ca_sco",
"ca_sonoma",
"md_montgomery",
"mn_ramsey",
"ma_framingham_payroll",
"ma_framingham_vendor",
"ia_das"
],
"enumTitles": [
"All jurisdictions in the selected state(s)",
"City of Austin, TX — Unclaimed Property (Municipal)",
"City of Corpus Christi, TX — Unclaimed Property (Municipal)",
"City of Providence, RI — Uncashed Municipal Check",
"Marin County, CA — Uncashed County Check",
"City of Roseville, CA — Stale-Dated Check (Municipal)",
"California State Controller — Statewide Unclaimed Property",
"Sonoma County, CA — Stale-Dated Check (County)",
"Montgomery County, MD — Unclaimed Vendor Payment (County)",
"Ramsey County, MN — Unclaimed Money (County)",
"Town of Framingham, MA — Unclaimed Payroll Check (Municipal)",
"Town of Framingham, MA — Unclaimed Resident/Vendor/AP Check (Municipal)",
"State of Iowa (DAS) — Outdated State Warrant"
],
"prefill": "ALL",
"title": "Jurisdiction",
"type": "string"
},
"maxAmountUsd": {
"description": "Only include records worth at most this much. Leave unset for no maximum.",
"editor": "number",
"maximum": 100000000,
"minimum": 0,
"title": "Maximum amount (USD)",
"type": "number"
},
"maxItems": {
"default": 20,
"description": "Hard cap on emitted records (1–50,000).",
"maximum": 50000,
"minimum": 1,
"prefill": 3,
"title": "Max items",
"type": "integer"
},
"minAmountUsd": {
"default": 0,
"description": "Only include records worth at least this much. 0 = no minimum. When an amount filter is active, records whose source discloses no amount are excluded unless `includeUnknownAmount` is on.",
"maximum": 100000000,
"minimum": 0,
"prefill": 0,
"title": "Minimum amount (USD)",
"type": "number"
},
"mode": {
"default": "search",
"description": "search: find records by owner name or property ID. browse: list a register without a name filter. byPropertyId: exact property/warrant/check lookup.",
"editor": "select",
"enum": [
"search",
"browse",
"byPropertyId"
],
"enumTitles": [
"Search by owner name",
"Browse a register",
"Look up a property ID"
],
"prefill": "search",
"title": "Mode",
"type": "string"
},
"ownerName": {
"description": "Full or partial owner/payee name (case-insensitive). Words can be in any order and commas are ignored, so `Smith, John` and `John Smith` both work.",
"editor": "textfield",
"prefill": "Johnson",
"title": "Owner name",
"type": "string"
},
"propertyId": {
"description": "Exact property ID, warrant number or check number. Works in every mode; `byPropertyId` is the dedicated lookup mode.",
"editor": "textfield",
"title": "Property ID",
"type": "string"
},
"propertyType": {
"default": "ALL",
"description": "Broad property-type group. California's 190 raw NAUPA codes are mapped into these groups; use `propertyTypeContains` for an exact raw-string filter.",
"editor": "select",
"enum": [
"ALL",
"bankAccounts",
"securities",
"uncashedChecks",
"insurance",
"refunds",
"wages",
"pensions",
"trusts",
"safeDeposit",
"other"
],
"enumTitles": [
"All property types",
"Bank accounts",
"Securities & dividends",
"Uncashed checks & warrants",
"Insurance & annuities",
"Refunds & rebates",
"Wages & payroll",
"Pensions & retirement",
"Trusts & estates",
"Safe-deposit boxes",
"Other"
],
"prefill": "ALL",
"title": "Property type",
"type": "string"
},
"propertyTypeContains": {
"description": "Advanced: keep only records whose raw source type contains this text, e.g. `Dividend` or `Endowment`. Combined with the group filter.",
"editor": "textfield",
"title": "Raw property type contains",
"type": "string"
},
"sortBy": {
"default": "amountDesc",
"description": "How to order results. `relevance` preserves source and file order. Records missing the chosen field sink to the bottom.",
"editor": "select",
"enum": [
"amountDesc",
"amountAsc",
"dateDesc",
"dateAsc",
"ownerNameAsc",
"ownerNameDesc",
"relevance"
],
"enumTitles": [
"Highest amount first",
"Lowest amount first",
"Most recent first",
"Oldest first",
"Owner name A–Z",
"Owner name Z–A",
"Relevance (source order)"
],
"prefill": "amountDesc",
"title": "Sort by",
"type": "string"
},
"state": {
"default": "MN",
"description": "Which state's unclaimed-property source(s) to query. 'All states' fans out to every supported source in one run.",
"editor": "select",
"enum": [
"ALL",
"CA",
"IA",
"MA",
"MD",
"MN",
"RI",
"TX"
],
"enumTitles": [
"All states (multi-state search)",
"California",
"Iowa",
"Massachusetts",
"Maryland",
"Minnesota",
"Rhode Island",
"Texas"
],
"prefill": "MN",
"title": "State",
"type": "string"
},
"valueRange": {
"default": "500plus",
"description": "Which California State Controller archive to scan for browsing and name searches. Exact property-ID lookups scan all four ranges (smallest first) so lower balances are not missed, then stop at the matching range. `All value ranges` scans four range files one at a time and is much heavier than the default.",
"editor": "select",
"enum": [
"500plus",
"100to500",
"10to100",
"under10",
"all"
],
"enumTitles": [
"$500 and above",
"$100 to $499.99",
"$10 to $99.99",
"Under $10",
"All value ranges"
],
"prefill": "500plus",
"title": "California value range",
"type": "string"
}
},
"required": [
"mode",
"state"
],
"schemaVersion": 1,
"title": "US Unclaimed Property Scraper Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
unclaimedProperty | string | optional | Dataset containing all scraped unclaimed-property records. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "One record per unclaimed-property entry from a public US register, with owner, amount, holder, property type, dates, property ID and source traceability wherever the source discloses them.",
"properties": {
"unclaimedProperty": {
"description": "Dataset containing all scraped unclaimed-property records.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Unclaimed property records",
"type": "string"
}
},
"title": "US Unclaimed Property & Funds Scraper Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"overview": {
"display": {
"component": "table",
"properties": {}
},
"title": "Unclaimed property records",
"transformation": {
"fields": [
"ownerName",
"amountUsd",
"state",
"jurisdiction",
"propertyType",
"reportedDate",
"propertyId",
"sourceUrl"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
US Unclaimed Property & Funds Scraper
Search unclaimed money and uncashed checks across 12 public US registers in one run. The actor reads statewide bulk files from California and Iowa plus municipal open-data registers, then returns owner, amount, holder, property type, dates and property IDs where the source discloses them.
What it does
- Three modes:
searchby owner name,browsea register, andbyPropertyIdfor an exact property, warrant or check lookup. - 12 sources in 7 states: California, Iowa, Massachusetts, Maryland, Minnesota, Rhode Island and Texas.
- Up to 50,000 records per run — the old 1,000-row ceiling is gone, and every source is paginated or streamed to its own limit.
- Useful filters: amount range, include/exclude records with no disclosed amount, date range, broad property-type groups, raw type text and property ID.
- Seven sort orders: amount, date, owner name and source order.
- Empty fields are omitted — the actor never invents a value for a field a source does not publish.
Services covered
| State | Source | What it publishes |
|---|---|---|
| CA | California State Controller (SCO) | Statewide unclaimed property, weekly ZIP/CSV archive |
| CA | Marin County | Uncashed county checks |
| CA | City of Roseville | Stale-dated municipal checks |
| CA | Sonoma County | Stale-dated county checks |
| IA | Iowa Department of Administrative Services | Outdated state warrants by fiscal year |
| MA | Town of Framingham | Unclaimed payroll checks |
| MA | Town of Framingham | Unclaimed resident/vendor/AP checks |
| MD | Montgomery County | Unclaimed vendor payments |
| MN | Ramsey County | Unclaimed money |
| RI | City of Providence | Uncashed municipal checks |
| TX | City of Austin | Unclaimed property |
| TX | City of Corpus Christi | Unclaimed property |
How it works
Municipal registers are queried through their public Socrata (SODA) JSON APIs with $limit, $offset, deterministic $order and server-side filters. California publishes four value-range ZIP archives (plus an all-records archive the actor does not download); the actor streams the selected range file to a temporary file with HTTP Range resume, scans the CSV parts line by line, and deletes the file. Iowa publishes one XLSX per fiscal year, read in openpyxl's read-only mode and deleted after the scan. All sources are anonymous: no account, cookie, API key or proxy setup is required.
The California statewide file has no date field. When a date filter is set, California statewide and the other date-less registers are skipped and the status message says so. The default California range is $500 and above (about 163 MB); choosing all value ranges scans four files one at a time, which takes much longer. A property-ID lookup always checks every California range, smallest archive first, and stops once the bucket containing the ID has been scanned, so an ID below $500 is never hidden by the default.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
mode |
select | search |
search, browse or byPropertyId |
state |
select | MN |
ALL, CA, IA, MA, MD, MN, RI, TX |
jurisdiction |
select | ALL |
Narrow to one of the 12 sources |
ownerName |
text | — | Case-insensitive; word order and commas do not matter |
propertyId |
text | — | Exact property ID, warrant or check number |
minAmountUsd |
number | 0 |
Amount floor; 0 means no floor |
maxAmountUsd |
number | — | Amount ceiling |
includeUnknownAmount |
boolean | false |
Keep records with no amount when an amount filter is active |
dateFrom |
text | — | Earliest date, YYYY-MM-DD |
dateTo |
text | — | Latest date, inclusive, YYYY-MM-DD |
propertyType |
select | ALL |
10 broad groups over raw NAUPA codes and source categories |
propertyTypeContains |
text | — | Raw type substring filter, e.g. Dividend |
sortBy |
select | amountDesc |
Amount, date, owner name or source order |
maxItems |
integer | 20 |
1–50,000 |
valueRange |
select | 500plus |
California archive range; ignored for property-ID lookups, which scan all ranges |
iaFiscalYear |
select | latest |
Iowa fiscal year, all, or a specific year |
Examples
Search one name across every state:
{"mode": "search", "state": "ALL", "ownerName": "Smith", "maxItems": 50}
Browse California's largest balances:
{"mode": "browse", "state": "CA", "jurisdiction": "ca_sco", "minAmountUsd": 1000, "maxItems": 100}
Look up a California property ID:
{"mode": "byPropertyId", "state": "CA", "propertyId": "13755891"}
Browse Iowa warrants from FY2026 with dates:
{"mode": "browse", "state": "IA", "iaFiscalYear": "2026", "dateFrom": "2025-07-01", "sortBy": "dateDesc", "maxItems": 100}
Output
Every record contains the fields the source actually discloses. Existing fields are unchanged; the revamp adds richer fields beside them.
| Field | Description |
|---|---|
ownerName |
Owner/payee name |
amountUsd |
Current cash balance or warrant/check amount |
reportedDate |
Check, warrant or payment date (YYYY-MM-DD) |
address, city, postalCode |
Owner last-known address, where disclosed |
ownerState, ownerCountry |
Owner state/country, where disclosed (California) |
recordId |
Source record/check/warrant ID |
propertyId |
California property ID |
checkNumber, warrantNumber |
Source check or warrant number |
departmentCode |
Issuing Iowa department |
vendorId, invoiceDate, paymentStatus |
Montgomery County vendor-payment fields |
holderName |
Entity holding the funds |
holderAddress, holderCity, holderState, holderZip |
Holder location, where disclosed (California) |
propertyType |
Raw source category or NAUPA property-type string |
cashReported, sharesReported |
Reported cash and share counts (California) |
securitiesName, cusip |
Security description and CUSIP (California) |
numberOfOwners, pendingClaims, paidClaims |
Ownership and claim counts (California) |
valueRange |
California archive range the row came from |
state, jurisdiction |
Two-letter state and source name |
sourceKey, sourceName, sourceType |
Source traceability |
sourceUpdatedAt |
Source file date (California/Iowa) |
sourceUrl, claimUrl |
Public dataset page and official claim/search page |
recordType |
Always unclaimedProperty |
scrapedAt |
UTC scrape timestamp |
Usage cost
The actor runs on Apify's standard compute pricing. It uses no paid proxy and no external API key, so the only cost is the run's memory and compute time plus Apify's usual dataset/result charges. The default 2 GB memory is sized for the California ZIP streaming path. Start with a small maxItems and the default $500+ range for browsing; a full California all scan is intentionally expensive in time because it reads four multi-hundred-megabyte archives.
FAQ
Does this search every US state? No. It covers the 7 states listed above. Most other states publish their live search only through CAPTCHA- or WAF-gated portals, and this actor does not attempt to bypass those. The official state claim portals remain the right place to file a claim.
Why are some records missing an amount? A few registers publish names without a dollar value. When an amount filter is active, those records are excluded unless includeUnknownAmount is enabled.
Why does a date filter drop California results? The California statewide file has 25 columns but no date field. Date filters therefore skip it rather than guessing a date.
What is the difference between search and byPropertyId? search treats the name as words in any order. byPropertyId performs an exact match against property IDs, warrants and check numbers. Both accept the other field as an additional filter. A California property-ID lookup scans all four value-range archives because an ID lives in only one of them; this can take several minutes.
How fresh is the data? Municipal Socrata registers refresh on their own schedules, California posts new archives weekly (usually Thursday), and Iowa adds fiscal-year files as warrants are cancelled. The actor always reads the currently published source.
Can I get more than 5,000 rows from multiple sources at once? Yes, up to 50,000, but a multi-source run keeps at most 5,000 candidates per source so memory stays bounded. To take a single source deeper, select that jurisdiction alone.
How do I claim money I find? This actor only reports public records. Contact the jurisdiction/holderName office or use the claimUrl on the record.
Are the addresses and names personal data? Yes — they are public-record claimant data. Use them only with a lawful basis, and do not combine them with other datasets to re-identify people.
Notes
- Public-record data only: owner names and last-known addresses as published by government offices. No SSN, phone, email or claimant identity is collected.
- No CAPTCHA solving, no login, no credentials, and no proxy configuration are required or supported.
- California and Iowa archives are streamed and deleted per run; rows are never materialised in memory all at once.
- Duplicate rows are removed by source + record identity, while legitimate co-owners on one property ID are preserved.
- Invalid dates and inverted ranges produce a clear status message and a clean zero-record run rather than a crash.
Limitations
- 7 states, not 50. MissingMoney.com and most state live-search portals are behind CloudFront/WAF/Turnstile blocks. The actor links users to the official portals instead of bypassing them.
- No date for California statewide records. The source does not publish one.
- California property-ID lookups are slower. They must check every value-range archive (smallest first) and stop only after the matching bucket, because the default
$500+range would otherwise hide lower balances. - The California all-records archive is large. The default
$500+file is about 163 MB compressed; the full all-records ZIP is 3.25 GB, which is why the actor scans the four smaller range files instead. - Some municipal datasets change schema. Column names are verified against the live APIs; a renamed column causes that source to be skipped with a status note rather than returning wrong data.
- Amounts can be stale. A published balance is the holder's last report, not a live claim valuation.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build 5kMa20fol8r9Ve8yA. Documentation is regenerated from the default published build; private drafts are not included.