# Eviction Dockets Scraper: Harris County Court Records (`parseforge/metro-eviction-dockets-scraper`) Actor

Scrape Harris County justice court eviction filings, hearing settings and judgments with party names, rental addresses and claim amounts.

- **URL**: https://apify.com/parseforge/metro-eviction-dockets-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.23 / 1,000 eviction case rows

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/actors/running/actors-in-store.md#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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Harris County Court Records Scraper: Eviction Dockets

**Scrape every eviction filed in Harris County, Texas, roughly 1,700 new cases a week across sixteen justice court benches.** Every row carries the case number, filing date, cause of action, claim amount, landlord and tenant names, the rental address and the next hearing date. No login or API key. Export to CSV, JSON, Excel, or XML.

The court publishes these dockets as a form that returns one CSV at a time, capped at 90 days, one case type and one bench per request. This Actor drives that form: it splits your date range into the windows the court accepts, filters on the raw record, and returns one clean row per case, hearing or judgment.

| Who uses it | What they scrape eviction dockets for |
|---|---|
| Property wholesalers | Owners under pressure, weeks before the property changes hands |
| Property managers | Which addresses and which landlords file, and how often |
| Tenant advocates and legal aid | Upcoming hearings by ZIP so outreach lands before the docket |
| Housing researchers | Filing volume, claim amounts and outcomes over time |
| Debt buyers and collections | Debt claim and small claim filings from the same courts |

### What it does

This Actor collects three dockets from the Harris County justice courts and returns each record as a flat row. Every row carries:

- 🧾 **Case core:** case number, bench, case type, filing date, case age in days, style of case, cause of action, claim amount and status.
- 🏠 **Parties and addresses:** landlord and tenant names with full street address, city, state and ZIP.
- 📅 **Hearing:** next hearing description, date, time and the days remaining until it is heard.
- ⚖️ **Outcome:** disposition description and date, with the full judgment detail available as a block.
- 🧮 **Computed signals:** case age, days until hearing, parsed unit number, corporate landlord flag and a property key that dedupes one address across cases.

Results export to CSV, JSON, Excel, or XML, or stream from the API.

### What you can do with eviction docket data

**🏚️ Find distressed properties before the market does.**

An eviction filing is a landlord under pressure, and the hearing is usually two to three weeks out. Pull the last seven days of filings, filter by ZIP, and you have a list with the address, the claim amount and the date the case is heard.

**📮 Reach tenants before the hearing.**

The hearings-set docket returns the calendar for the days ahead. Filter by ZIP or city and you get every household with a court date, in time to do something about it.

**📊 Measure a landlord or a submarket.**

Filter by plaintiff name and you get every case that landlord filed, with claim amounts and outcomes. Filter by ZIP and you get the filing rate of a submarket over any window.

**💵 Work the debt side of the same courts.**

Debt claims, small claims, tow hearings and writs come from the same extract with a different case type, so one Actor covers the whole justice court civil docket.

### Why choose this scraper

| | What you get |
|---|---|
| Three dockets | Cases filed, hearings set and judgments entered |
| Twenty-two case types | Eviction by default, plus debt claim, small claims, writs and the rest |
| Sixteen benches | All courts at once, or one precinct and place at a time |
| Windows handled for you | The 90 day and 31 day caps are split into requests automatically |
| Filters before billing | ZIP, city, status, claim amount, plaintiff, defendant and cause run on the raw record |
| Real addresses | The rental address is on the record, not a geocode guess |

### How it compares

Court record scrapers on Apify read the district clerk portals, which hold felony, family and civil district cases. Evictions are not filed there. They are filed in the justice courts, which run a separate system, and that is what this Actor reads. Our own `harris-county-court-records-scraper` covers the district clerk side, so the two do not overlap.

| | This Actor | District clerk scrapers | Distressed lead aggregators |
|---|---|---|---|
| Eviction filings | Yes | No | Sometimes, resold |
| Hearing calendar | Yes | No | No |
| Judgment amounts | Yes | Partial | No |
| Tenant and landlord addresses | Yes | Partial | Yes, at a markup |
| Latency | Same day the court publishes | Same day | Days to weeks |

### What an eviction case looks like

```json
{
  "rowType": "case",
  "caseNumber": "261100369031",
  "court": "Precinct 1, Place 1",
  "caseType": "Eviction",
  "caseFileDate": "2026-08-21",
  "caseAgeDays": 7,
  "styleOfCase": "Rama Place at Greenway  vs.  Tiffany Dena White",
  "causeOfAction": "Nonpayment - Residential",
  "claimAmount": 2348.38,
  "caseStatus": "Active",
  "plaintiffName": "Rama Place at Greenway",
  "plaintiffAddress1": "3333 Cummins St.",
  "plaintiffCity": "Houston",
  "plaintiffState": "TX",
  "plaintiffZip": "77027",
  "defendantName": "Tiffany Dena White",
  "defendantAddress1": "3333 Cummins St, UNIT 1101",
  "defendantCity": "Houston",
  "defendantState": "TX",
  "defendantZip": "77027",
  "nextHearingDescription": "Eviction Docket",
  "nextHearingDate": "2026-09-10",
  "nextHearingTime": "10:30 AM",
  "daysUntilHearing": 13,
  "dispositionDescription": "N/A",
  "county": "Harris",
  "state": "TX",
  "scrapedAt": "2026-08-28T19:54:52.041Z"
}
```

### Configure the run

Pick the docket in **Docket to scrape**, the **Case types** and the **Courts**, then set a date range. Leave the dates empty and filings and judgments cover the last seven days while hearings cover the next fourteen. Filters run on the court record before the row is built, so filtering by claim amount or by landlord does not require buying any block.

This week's evictions across every bench:

```json
{
  "extracts": ["casesFiled"],
  "caseTypes": ["8464"],
  "courts": ["300"],
  "maxItems": 2000
}
```

Upcoming hearings in three ZIP codes, with the parsed address:

```json
{
  "extracts": ["hearingsSet"],
  "caseTypes": ["8464"],
  "zipCodes": ["77026", "77028", "77076"],
  "includeAddressParse": true,
  "maxItems": 500
}
```

One landlord's full history with judgments:

```json
{
  "extracts": ["casesFiled", "judgmentsEntered"],
  "caseTypes": ["8464"],
  "plaintiffContains": "Greenway",
  "dateFrom": "2026-06-01",
  "dateTo": "2026-08-28",
  "includeJudgmentDetail": true,
  "includeAttorneys": true,
  "maxItems": 1000
}
```

### Pricing

Pay per event. You are charged per row written, plus one event per docket request and one start event per run.

| Event | Price |
|---|---|
| Actor start | $0.02 per run |
| Docket request | $0.01 per request |
| Eviction case row | $0.007 per row |
| Civil case, hearing and judgment rows | $0.005 per row |
| Judgment detail block | $0.003 per row |
| Attorneys, second parties and parsed address blocks | $0.002 per row each |

| Rows | Typical cost |
|---|---|
| 100 eviction rows | $0.73 |
| 1,000 eviction rows | $7.03 |
| 10,000 eviction rows | $70.06 |

Volume tiers apply: Bronze pays 3.8% less, Silver 7.4% less, Gold and above 11% less.

### Free users

Free Apify accounts get a 10 row preview per run, which is enough to check the schema and the field names. [Upgrade to a paid plan](https://apify.com/pricing?fpr=vmoqkp) to lift the cap to a million rows per run.

### Run it

1. Create a free [Apify account](https://apify.com/?fpr=vmoqkp). New accounts get $5 in free credit.
2. Open the Actor, leave the default input, and press Start to see ten recent eviction filings.
3. Set your date range, ZIP codes or landlord name, then raise Max Items.
4. Export the dataset to CSV, JSON, Excel or XML, or read it from the API.

### Use with AI agents (MCP)

```
claude mcp add apify --transport sse https://mcp.apify.com/sse --header "Authorization: Bearer YOUR_APIFY_TOKEN"
```

Then ask in plain language:

- "Get every eviction filed in Harris County in the last week over $3,000."
- "Which eviction hearings are set in ZIP 77026 in the next two weeks?"
- "Pull all evictions filed by landlords whose name contains 'Camden' this quarter."

### Troubleshooting

**No results came back.** The most common cause is a date range with no filings, for example a weekend, or a case type that this court rarely sees. Start with the default seven days and the Eviction case type.

**Fewer rows than I asked for.** When you select several dockets the cap is split between them. Raise Max Items, or ask for one docket at a time.

**The run is slow.** One request for 90 days of all case types returns megabytes of CSV. Narrow the window or the case type and the requests return in seconds.

**A hearing date is empty.** Not every filing has a hearing set yet. Tick "Only cases with a hearing set" to drop those rows.

**Judgment columns are missing.** Judgment detail is an optional block. Tick it and the nine judgment columns appear on the rows that have them.

### FAQ

| Question | Answer |
|---|---|
| Which county is covered? | Harris County, Texas, which is Houston and its unincorporated area, across all sixteen justice court benches. |
| Are Maricopa and Fulton covered? | Not yet. Neither publishes a date-range docket export; both only offer a name search behind a session, which is a separate build. |
| How fresh is the data? | The court publishes the extract from its live case management system, so a case appears the day it is entered. |
| How far back does it go? | The service accepts any past date; windows over 90 days are split into several requests. |
| What is the hearing window? | Hearings can be requested up to 31 days ahead, which is the court's own limit. |
| Can I filter by ZIP without buying the address block? | Yes. Filters run on the raw court record before the row is built. |
| Is this the same as the district clerk? | No. Evictions are justice court cases and are not in the district clerk system. |
| Does it need a proxy? | No. The extract service answers plain HTTP requests. |
| Is this personal data? | These are public court records published by the court itself. Check your own obligations before using tenant names for outreach. |

### Related actors

- [Harris County Court Records Scraper](https://apify.com/parseforge/harris-county-court-records-scraper?fpr=vmoqkp) for district and probate cases.
- [RealtyTrac Scraper](https://apify.com/parseforge/realtytrac-scraper?fpr=vmoqkp) for foreclosure and distressed listings.
- [Auction.com Property Scraper](https://apify.com/parseforge/auction-com-property-scraper?fpr=vmoqkp) for properties already at auction.
- [CourtListener Dockets Scraper](https://apify.com/parseforge/courtlistener-dockets-scraper?fpr=vmoqkp) for federal dockets.
- [Sunbiz Florida Business Scraper](https://apify.com/parseforge/sunbiz-florida-business-scraper?fpr=vmoqkp) to resolve the company behind a corporate landlord.

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

Disclaimer: this is an unofficial tool, not affiliated with Harris County or its justice courts. It reads only the public data extract the court publishes without a login. Court records are public records in Texas; names and addresses appear because the court publishes them. If you process this data about identifiable people, GDPR, CCPA and PIPL obligations are yours to meet.

# Actor input Schema

## `extracts` (type: `array`):

Cases filed returns new lawsuits, hearings set returns the docket calendar for the days ahead, judgments entered returns cases where the court ruled.

## `caseTypes` (type: `array`):

Justice court case types. Eviction is the default. Every value is a code the court's own search page accepts.

## `courts` (type: `array`):

All Courts covers the sixteen justice court benches at once. Pick single benches to split the load or to watch one precinct.

## `dateFrom` (type: `string`):

First date, as YYYY-MM-DD. Filings and judgments default to the last seven days; hearings default to today. The court refuses windows over 90 days for filings and judgments and over 31 days for hearings, so wider ranges are split into several requests.

## `dateTo` (type: `string`):

Last date, as YYYY-MM-DD. Filings and judgments cannot go past today; hearings cannot go past 31 days from today.

## `maxItems` (type: `integer`):

Free users: limited to 10 items (preview). Paid users: up to 1,000,000.

## `cityContains` (type: `string`):

Case-insensitive substring on the defendant city, for example 'Houston' or 'Katy'.

## `zipCodes` (type: `array`):

Keep only cases where the defendant address ZIP matches one of these five-digit codes.

## `caseStatus` (type: `array`):

Court status of the case. Active means still open, Disposed means the court has ruled or the case closed.

## `minClaimAmount` (type: `number`):

Keep only cases claiming at least this much, in dollars. Decimals are honoured.

## `maxClaimAmount` (type: `number`):

Keep only cases claiming at most this much, in dollars.

## `plaintiffContains` (type: `string`):

Case-insensitive substring on the plaintiff, for example a landlord or management company name.

## `defendantContains` (type: `string`):

Case-insensitive substring on the defendant name.

## `causeOfActionContains` (type: `string`):

Case-insensitive substring on the cause of action, for example 'Nonpayment' or 'Holdover'.

## `onlyWithHearing` (type: `boolean`):

Drop cases that have no next hearing date on the record.

## `includeAttorneys` (type: `boolean`):

Adds the plaintiff and defendant attorney name and address, twelve columns.

## `includeSecondParties` (type: `boolean`):

Adds the second plaintiff, second defendant and their attorneys, twenty columns. Multi-tenant filings use these.

## `includeJudgmentDetail` (type: `boolean`):

Adds judgment text, date, in favour of, against, amount, attorney fees, court costs and both interest rates.

## `includeAddressParse` (type: `boolean`):

Splits the unit number out of the rental address, adds a five-digit ZIP, flags corporate plaintiffs and builds a property key that dedupes one address across cases.

## Actor input object example

```json
{
  "extracts": [
    "casesFiled"
  ],
  "caseTypes": [
    "8464"
  ],
  "courts": [
    "300"
  ],
  "maxItems": 10,
  "onlyWithHearing": false,
  "includeAttorneys": false,
  "includeSecondParties": false,
  "includeJudgmentDetail": false,
  "includeAddressParse": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `csv` (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 = {
    "extracts": [
        "casesFiled"
    ],
    "caseTypes": [
        "8464"
    ],
    "courts": [
        "300"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/metro-eviction-dockets-scraper").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 = {
    "extracts": ["casesFiled"],
    "caseTypes": ["8464"],
    "courts": ["300"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/metro-eviction-dockets-scraper").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 '{
  "extracts": [
    "casesFiled"
  ],
  "caseTypes": [
    "8464"
  ],
  "courts": [
    "300"
  ],
  "maxItems": 10
}' |
apify call parseforge/metro-eviction-dockets-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/metro-eviction-dockets-scraper"
        }
    }
}

```

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/FxDbCgoPduo21fBdZ/builds/zIR2NcksOgGhDjePg/openapi.json
