Vexaloom Labs

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.

FieldTypeRequiredDescription
modestringrequiredsearch: find records by owner name or property ID. browse: list a register without a name filter. byPropertyId: exact property/warrant/check lookup.
statestringrequiredWhich state's unclaimed-property source(s) to query. 'All states' fans out to every supported source in one run.
jurisdictionstringoptionalNarrow 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
FieldTypeRequiredDescription
modestringrequiredsearch: find records by owner name or property ID. browse: list a register without a name filter. byPropertyId: exact property/warrant/check lookup.
statestringrequiredWhich state's unclaimed-property source(s) to query. 'All states' fans out to every supported source in one run.
jurisdictionstringoptionalNarrow 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).
ownerNamestringoptionalFull 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.
propertyIdstringoptionalExact property ID, warrant number or check number. Works in every mode; `byPropertyId` is the dedicated lookup mode.
minAmountUsdnumberoptionalOnly 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.
maxAmountUsdnumberoptionalOnly include records worth at most this much. Leave unset for no maximum.
includeUnknownAmountbooleanoptionalWhen an amount filter is active, also keep records whose source publishes no dollar amount (for example City of Austin, TX).
dateFromstringoptionalEarliest 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.
dateTostringoptionalLatest check/warrant issue date, inclusive (YYYY-MM-DD).
propertyTypestringoptionalBroad property-type group. California's 190 raw NAUPA codes are mapped into these groups; use `propertyTypeContains` for an exact raw-string filter.
propertyTypeContainsstringoptionalAdvanced: keep only records whose raw source type contains this text, e.g. `Dividend` or `Endowment`. Combined with the group filter.
sortBystringoptionalHow to order results. `relevance` preserves source and file order. Records missing the chosen field sink to the bottom.
maxItemsintegeroptionalHard cap on emitted records (1–50,000).
valueRangestringoptionalWhich 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.
iaFiscalYearstringoptionalWhich 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.

FieldTypeRequiredDescription
unclaimedPropertystringoptionalDataset 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: search by owner name, browse a register, and byPropertyId for 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.

Open the step-by-step Python guide →

Source build 5kMa20fol8r9Ve8yA. Documentation is regenerated from the default published build; private drafts are not included.