Skip to content
    ↑↓ to choose · Enter to open

    · 12 min read

    US Unclaimed Property Scraper: 17 Data Fields per Record (2026)

    By CrawlerBros Engineering Team

    Each record carries 17 output fields covering unclaimed money and uncashed checks from 9 city and county treasuries across 6 states. Sourced from public Socrata open-data APIs, this Actor queries public municipal ledgers without login requirements. A thousand results cost $5.00 on Apify's free plan, which includes $5.00 of monthly platform usage to try the Actor without a credit card. This tool is built for asset-recovery researchers, genealogy firms, and fraud investigators; it is not for users who need statewide treasury databases or MissingMoney.com data, which require solving CAPTCHA challenges or passing WAF blocks.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open US Unclaimed Property Scraper on Apify and run the prefilled example.

    How reliable is US Unclaimed Property Scraper in production?

    Across the last 30 days of public runs on the Apify platform, US Unclaimed Property Scraper recorded 74 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 74 100.0%
    Failed 0 0.0%
    Aborted by the user 0 0.0%
    Timed out 0 0.0%
    Total 74 100.0%

    No run failed or timed out in the last 30 days. Keep a retry and an alert on scheduled runs all the same: a clean month is a record, not a guarantee.

    What does it cost to run US Unclaimed Property Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. No run failed or timed out in the last 30 days, so the list price is a fair budget; keep a retry in place all the same.

    The primary driver of result charges is the maxItems cap multiplied by the number of searches you run. On a first run, keeping maxItems at the default value of 20 limits result charges to at most $0.10 while allowing you to verify fields. Filtering by state or jurisdiction restricts dataset volume before running larger extractions.

    How do you run US Unclaimed Property Scraper from the API?

    The schema marks 2 of its 8 controls as required: mode, state. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for US Unclaimed Property Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~us-unclaimed-property-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search","state":"MN","jurisdiction":"ALL","ownerName":"Johnson","minAmountUsd":0,"sortBy":"amountDesc","maxItems":20}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search",
      "state": "MN",
      "jurisdiction": "ALL",
      "ownerName": "Johnson",
      "minAmountUsd": 0,
      "sortBy": "amountDesc",
      "maxItems": 20
    }
    
    run = client.actor("crawlerbros~us-unclaimed-property-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search",
      "state": "MN",
      "jurisdiction": "ALL",
      "ownerName": "Johnson",
      "minAmountUsd": 0,
      "sortBy": "amountDesc",
      "maxItems": 20
    }
    
    const run = await client.actor('crawlerbros~us-unclaimed-property-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which US Unclaimed Property Scraper inputs matter, and which can you skip?

    The two required controls are mode and state. Use mode set to search with an ownerName to query target payees, or switch mode to browse to list a full state register. Optional filters like minAmountUsd and jurisdiction narrow the dataset; leave them at defaults on your initial run.

    • mode (string): search: find records by owner name. browse: list a state's register without a name filter. Default: "search".
    • state (string): Which state's unclaimed-property source(s) to query. 'All states' fans out to every supported source in one run. Default: "MN".
    • jurisdiction (string): Narrow to one specific government source's dataset (useful when a state has more than one, e.g. California or Massachusetts). 'All jurisdictions' queries every source in the selected state(s). Default: "ALL".
    • ownerName (string): Full or partial owner/payee name to search for (case-insensitive substring match), e.g. Johnson or Smith LLC. Default: "Johnson".
    • minAmountUsd (integer): Only include records worth at least this much (where the source discloses an amount). 0 = no minimum. Default: 0.
    • maxAmountUsd (integer): Only include records worth at most this much (where the source discloses an amount). Leave unset for no maximum.
    • sortBy (string): How to order results. Falls back to whatever field a jurisdiction actually provides. Default: "amountDesc".
    • maxItems (integer): Hard cap on emitted records. Default: 20.

    Fixed-choice controls: mode accepts search (Search by owner name), browse (Browse a state's register); state accepts ALL (All states (multi-state search)), CA (California), MA (Massachusetts), MD (Maryland), MN (Minnesota), RI (Rhode Island), TX (Texas); jurisdiction accepts 10 values (default ALL), including ALL (All jurisdictions in the selected state(s)), tx_austin (City of Austin, TX - Unclaimed Property (Municipal)), tx_corpuschristi (City of Corpus Christi, TX - Unclaimed Property (Municipal)), ri_providence (City of Providence, RI - Uncashed Municipal Check); sortBy accepts amountDesc (Highest amount first), amountAsc (Lowest amount first), dateDesc (Most recent first), dateAsc (Oldest first), relevance (source order).

    What does US Unclaimed Property Scraper return?

    Returned items provide payee names, amounts, addresses, dates, and government source links for audit matching and asset discovery. Austin records disclose names without dollar amounts, while Montgomery County records include extra fields like vendorId, invoiceDate, and paymentStatus.

    • ownerName: Owner/payee name on the unclaimed funds
    • amountUsd: Dollar amount, where the source discloses one
    • reportedDate: Check/transaction date (YYYY-MM-DD), where disclosed
    • address: Last-known street address, where disclosed (joins multi-line addresses, e.g. Providence's suite/floor lines, into one string)
    • city: City, where disclosed
    • postalCode: ZIP code, where disclosed
    • recordId: Source's own record/check ID, where disclosed
    • vendorId: Source's own vendor/payee ID, where disclosed - currently only Montgomery County, MD
    • invoiceDate: Underlying invoice date (YYYY-MM-DD), where disclosed separately from reportedDate - currently only Montgomery County, MD
    • state: 2-letter state code
    • jurisdiction: The specific county/city government holding the funds
    • holderName: Same as jurisdiction - the entity holding the money
    • propertyType: Category, e.g. "Unclaimed Vendor Payment (County)"
    • paymentStatus: Bank/ERP status of the payment (e.g. "Negotiable", "Void"), where disclosed - currently only Montgomery County, MD
    • sourceUrl: The government's own open-data page for this dataset
    • recordType: Always "unclaimedProperty"
    • scrapedAt: UTC timestamp of the scrape

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open US Unclaimed Property Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Select mode by choosing search to filter by owner name or browse to list an entire register.
    2. Set state to ALL to query all supported sources or pick a two-letter state code like CA or MD.
    3. Set jurisdiction to ALL or pick a specific source code like ca_marin or md_montgomery.
    4. Provide ownerName when mode is set to search, using a case-insensitive name or business substring.
    5. Adjust minAmountUsd or maxAmountUsd to restrict results to a desired dollar range.
    6. Set sortBy to amountDesc or dateDesc to control result ordering across jurisdictions.
    7. Cap maxItems at your intended batch size to limit result charges before executing.
    8. Execute the run and verify that output items contain recordType equal to unclaimedProperty.

    How do you apply it? Three worked playbooks

    These are US Unclaimed Property Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Asset-recovery researchers

    Outcome: Screen multiple states' unclaimed-funds ledgers by name in one run

    Configure: mode="search", state="ALL", ownerName="Johnson", maxItems=100, sortBy="amountDesc"

    Working method: Execute a search across all 9 sources using a target surname. Check that returned items match the requested string in ownerName and carry valid sourceUrl values.

    Deliverable: A multi-jurisdiction dataset containing payee names, amounts, holding entities, and source open-data links.

    Stop condition: The run emits zero results across all 9 sources for a known common surname.

    Use case 2: Genealogy / heir-search firms

    Outcome: Sweep county-level registers for a family surname

    Configure: mode="search", state="CA", jurisdiction="ca_marin", ownerName="Smith", sortBy="dateAsc", maxItems=200

    Working method: Execute a name search locked to a single county source. Review reportedDate chronologically to trace historical family payments from oldest to newest.

    Deliverable: A chronological listing of county checks showing names, addresses, and transaction dates.

    Stop condition: Output records for the target county omit street address and city details across the full result set.

    Use case 3: Finance / fraud investigators

    Outcome: Cross-reference vendor payment records with known entities

    Configure: mode="browse", state="MD", jurisdiction="md_montgomery", minAmountUsd=500, sortBy="amountDesc", maxItems=500

    Working method: Browse an entire county register without a name filter to fetch high-value vendor payments. Reconcile returned vendorId and invoiceDate fields against internal audit ledgers.

    Deliverable: An uncashed vendor payment extract with vendorId, invoiceDate, and paymentStatus values.

    Stop condition: Records returned from Montgomery County lack vendorId or paymentStatus values.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 0.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    This Actor aggregates city and county open-data feeds across 6 states, so it does not cover full state controller databases. To query California's statewide dataset, use California Unclaimed Property Scraper instead. Downstream pipelines handling City of Austin records should expect omitted amount values.

    When should you not use US Unclaimed Property Scraper?

    Do not use this Actor if you require complete statewide database coverage across all 50 states. State treasury portals and sites like MissingMoney.com enforce Cloudflare Turnstile challenges, AWS WAF Bot Control 403s, or Google reCAPTCHA tokens that this tool does not bypass. If you specifically need California's full statewide Controller database, switch to California Unclaimed Property Scraper. If your team is searching real estate auction listings rather than municipal treasury payments, use Auction.com Property Scraper instead.

    What should you check before trusting the output?

    • Confirm that state contains a supported 2-letter state code (CA, MA, MD, MN, RI, or TX).
    • Verify that reportedDate uses the YYYY-MM-DD format whenever the source discloses a date.
    • Check that amountUsd is an integer when present, keeping in mind City of Austin records omit this field.
    • Ensure vendorId, invoiceDate, and paymentStatus are present when jurisdiction is md_montgomery.
    • Stop scheduled executions if records arrive missing both ownerName and jurisdiction.

    None of this proves a record is correct. It gives a scheduled US Unclaimed Property Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    Does this Actor cover my state's complete unclaimed property database?

    No. It covers public Socrata open-data registers from 9 city and county treasuries across 6 states (CA, MD, MA, MN, RI, TX). Statewide portals use CAPTCHAs or WAF rules. For California's full statewide file, use California Unclaimed Property Scraper instead.

    How much does it cost to run this Actor?

    Results cost $5.00 per 1,000 items ($0.005 per result) on Apify's free plan. An initial test run using the default maxItems cap of 20 costs at most $0.10 in result charges.

    Why are dollar amounts missing from certain records?

    The City of Austin publishes owner names without disclosing dollar amounts. The Actor omits missing fields rather than fabricating placeholder numbers.

    How reliable are runs for this Actor?

    In the last 30 days, telemetry shows 74 runs with 74 succeeding (100.0% success rate) and 0 failing or timing out.

    Can I search all 6 states in a single run?

    Yes. Setting state to ALL queries all 9 open-data sources concurrently across the 6 supported states in one run.

    Where to go next

    When you are ready to run it, open US Unclaimed Property Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the US Unclaimed Property Scraper Actor page for the current input schema, pricing tier, and run history.

    If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-27.

    • Actor last updated by its maintainers on 2026-07-21.

    • Run outcome figures cover the 30 day public window ending 2026-09-27.

    • US Unclaimed Property Scraper on Apify

    Featured actors

    US Unclaimed Property Scraper

    Search unclaimed money and uncashed checks held by US government treasuries across multiple states (CA, MD, MA, MN, RI, TX). Search by owner name or browse by state -- amount, holder, property type, and dates included.

    Run on Apify ↗