# Ascension Works U.S. County Research Scraper (`ascensionworks/ascension-works-jurisdiction-research-request`) Actor

Research up to 100 U.S. counties or county equivalents in one cross-state request and receive customer-scoped availability results. Also try the Tax Sale Listings Scraper and Tax Sale Ranking Scraper.

- **URL**: https://apify.com/ascensionworks/ascension-works-jurisdiction-research-request.md
- **Developed by:** [Ascension Works](https://apify.com/ascensionworks) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $28.05 / 1,000 jurisdiction results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Ascension Works U.S. County Research Scraper

Classify a bounded set of U.S. counties or county equivalents and, when
verified for link-only delivery, return the selected official government page
for each requested jurisdiction without returning a bulk URL directory.

> Independent research utility. Not affiliated with or endorsed by any
> government agency, county, auction platform, or data provider.

### About Ascension Works

Learn more about the research suite at
[Ascension Works](https://ascensionworks.net/).

Ascension Works is a venture operated by Arete Praxis LLC. The original
software, documentation, configuration, and product presentation for this
Actor are proprietary intellectual property of Arete Praxis LLC under the
Ascension Works brand. Public records, official government materials, and
third-party materials remain subject to their respective rights and terms.

### Try the other Ascension Works scrapers

- [Tax Sale Listings Scraper](https://apify.com/ascensionworks/ascension-works-current-listing-research-request)
  cleans, filters, and organizes authorized listing records across up to 100
  counties.
- [Tax Sale Ranking Scraper](https://apify.com/ascensionworks/ascension-works-opportunity-screening-request)
  compares counties and ranks authorized listings using your selected criteria.

### What it does

- accepts 1 to 100 requested jurisdictions across multiple U.S. states or
  territories, plus one or two years;
- recognizes county-equivalent labels such as parish, borough, census area,
  independent city, and municipio;
- returns one classification per requested jurisdiction;
- provides correction suggestions for an unrecognized or ambiguous name;
- returns only the selected official government handoff page for a requested
  jurisdiction after service-side authorization checks approve link-only delivery;
- reports the data date, sale-type context, availability, authorization, and
  limitations.

The product does not provide a bulk URL directory, raw pages, parser details,
or internal implementation data. A selected official page is visible only in
the result for the customer who requested that jurisdiction.

### Important limits

Each run is limited to 100 requested jurisdictions, but those jurisdictions may
cross state or territory lines. Coverage is not a guarantee of nationwide
automated collection or current listings. A jurisdiction may return
`manual_review_required`, `ambiguous`, or
`not_recognized`. A page being publicly viewable does not by itself authorize
automated collection, storage, redistribution, or commercial reuse.

Only jurisdictions with a current, separately recorded link-delivery approval
receive a selected official government handoff. Other recognized jurisdictions
return an availability or manual-review classification without a page address
and without a paid result event. Availability may contract or expand after
route-specific review.

No result guarantees a current sale or purchasable parcel. Independently verify
current local rules before acting.

### Data handling

Your input and final output are stored in this Actor run's Apify default
storages and follow your Apify account's access and retention settings.

When an eligible service-side route is used, the bounded request is sent to a
restricted Ascension Works-owned Apify run. After its result is copied and
validated, this Actor deletes that temporary run's default input, output, and
queue storages. If it cannot confirm all three deletions, no research result is
delivered. Minimal service logs record only product type, output count, and
status; Apify may retain generic run metadata and logs under its platform
policies.

Do not submit owner or taxpayer names, mailing or contact details, credentials,
raw pages, or other unnecessary personal data. If you enable Apify developer
run sharing or attach a run to an Actor Issue, Apify may provide the creator
access to the shared run's input, output, and logs.

### Support and corrections

Use the Actor's Apify Issue or support control for a reproducible problem or
jurisdiction correction. Include only the run ID, requested jurisdiction, and
generic status; never post credentials, private records, or personal data.
Route availability and permissions are periodically rechecked, and an affected
route may be held unavailable while a correction or authorization change is
reviewed.

### Early-release status

This is a coverage-limited research product. It does not promise nationwide
automated collection. The approved all-in price for each eligible verified
`jurisdiction_result` that is actually stored is $0.033000 FREE, $0.031350
BRONZE, $0.029700 SILVER, or $0.028050 GOLD, plus the $0.00005 Actor-start
event. Platform usage is included. Set at least $0.03305 as the run charge
authorization when one paid result is requested.
Manual-review, unsupported, unavailable, ambiguous, and correction results do
not receive the custom paid-result event.

# Actor input Schema

## `requestReference` (type: `string`):

Use the reference assigned to this bounded request. This value does not authorize processing or delivery.

## `requestText` (type: `string`):

Describe the bounded research request in plain language without including credentials, payment details, or sensitive personal information.

## `years` (type: `array`):

List one or two calendar or sale years. Availability and permitted use remain subject to the displayed product limits.

## `businessPurpose` (type: `string`):

Explain the legitimate business purpose for the requested research and how any delivered results would be used.

## `customerType` (type: `string`):

Identify the requester category so reseller, competitor, and unusual-use requests can be routed to manual review.

## `expectedVolume` (type: `string`):

Estimate the expected record volume. Large, unknown, or entire-collection requests require manual owner review.

## `deliveryMode` (type: `string`):

Choose authenticated portal or API access unless a separately reviewed written license permits an export.

## `lawfulPurposeAccepted` (type: `boolean`):

Confirm that the request is for a lawful purpose and does not seek prohibited or unauthorized use.

## `restrictedUseAccepted` (type: `boolean`):

Confirm that bulk extraction, mirroring, resale, redistribution, model training, and competitive database construction are prohibited unless expressly licensed.

## `licenseAccepted` (type: `boolean`):

Confirm acceptance of the displayed draft license and policy terms, subject to final owner review. This does not create a paid order.

## `maxResults` (type: `integer`):

Maximum jurisdiction-classification rows for this bounded request. This is automatically raised to the number of requested jurisdictions.

## `jurisdictions` (type: `array`):

Add 1 to 100 counties, parishes, boroughs, independent cities, census areas, municipios, or equivalent local jurisdictions. Each item carries its own state or territory code, so one request may cross state lines.

## Actor input object example

```json
{
  "requestReference": "SAMPLE-JURISDICTION-20260810",
  "requestText": "Find the official research route for the District of Columbia 2026 real-property tax lien sale.",
  "years": [
    2026
  ],
  "businessPurpose": "Internal due-diligence research for a possible direct tax-lien purchase.",
  "customerType": "direct_customer",
  "expectedVolume": "under_500",
  "deliveryMode": "portal_api",
  "lawfulPurposeAccepted": true,
  "restrictedUseAccepted": true,
  "licenseAccepted": true,
  "maxResults": 100,
  "jurisdictions": [
    {
      "stateCode": "DC",
      "name": "District of Columbia",
      "jurisdictionId": "US-DC-11001"
    }
  ]
}
```

# Actor output Schema

## `datasetId` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "requestReference": "SAMPLE-JURISDICTION-20260810",
    "requestText": "Find the official research route for the District of Columbia 2026 real-property tax lien sale.",
    "years": [
        2026
    ],
    "businessPurpose": "Internal due-diligence research for a possible direct tax-lien purchase.",
    "customerType": "direct_customer",
    "expectedVolume": "under_500",
    "deliveryMode": "portal_api",
    "lawfulPurposeAccepted": true,
    "restrictedUseAccepted": true,
    "licenseAccepted": true,
    "maxResults": 100,
    "jurisdictions": [
        {
            "stateCode": "DC",
            "name": "District of Columbia",
            "jurisdictionId": "US-DC-11001"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ascensionworks/ascension-works-jurisdiction-research-request").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "requestReference": "SAMPLE-JURISDICTION-20260810",
    "requestText": "Find the official research route for the District of Columbia 2026 real-property tax lien sale.",
    "years": [2026],
    "businessPurpose": "Internal due-diligence research for a possible direct tax-lien purchase.",
    "customerType": "direct_customer",
    "expectedVolume": "under_500",
    "deliveryMode": "portal_api",
    "lawfulPurposeAccepted": True,
    "restrictedUseAccepted": True,
    "licenseAccepted": True,
    "maxResults": 100,
    "jurisdictions": [{
            "stateCode": "DC",
            "name": "District of Columbia",
            "jurisdictionId": "US-DC-11001",
        }],
}

# Run the Actor and wait for it to finish
run = client.actor("ascensionworks/ascension-works-jurisdiction-research-request").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "requestReference": "SAMPLE-JURISDICTION-20260810",
  "requestText": "Find the official research route for the District of Columbia 2026 real-property tax lien sale.",
  "years": [
    2026
  ],
  "businessPurpose": "Internal due-diligence research for a possible direct tax-lien purchase.",
  "customerType": "direct_customer",
  "expectedVolume": "under_500",
  "deliveryMode": "portal_api",
  "lawfulPurposeAccepted": true,
  "restrictedUseAccepted": true,
  "licenseAccepted": true,
  "maxResults": 100,
  "jurisdictions": [
    {
      "stateCode": "DC",
      "name": "District of Columbia",
      "jurisdictionId": "US-DC-11001"
    }
  ]
}' |
apify call ascensionworks/ascension-works-jurisdiction-research-request --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ascensionworks/ascension-works-jurisdiction-research-request"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/L8fQ57AhuJfdTMJCS/builds/bRR6DkNRxhX8e10Ih/openapi.json
