# Illinois License Scraper | IDFPR 1.2M+ Records (`haketa/illinois-idfpr-license-scraper`) Actor

Extract 1.2M+ Illinois professional license records from IDFPR Socrata database. Pharmacy, nursing, physician, real estate & 100+ categories with discipline history & controlled substance data.

- **URL**: https://apify.com/haketa/illinois-idfpr-license-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Developer tools, Real estate, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 🏛️ Illinois IDFPR Professional License Scraper

Extract **1.2M+ professional license records** from the **[Illinois Department of Financial and Professional Regulation (IDFPR)](https://idfpr.illinois.gov/)** via the public Socrata API. Covers **100+ professional categories** across pharmacy, nursing, physician, real estate, engineering, law and more.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com)
[![No Browser](https://img.shields.io/badge/Engine-Socrata%20API-green)]()
[![1.2M+ Records](https://img.shields.io/badge/Records-1.2M%2B-orange)]()
[![Daily Updated](https://img.shields.io/badge/Data-Daily%20Updated-brightgreen)]()

---

### ⚡ How It Works

IDFPR publishes its entire professional licensing database on Illinois' Socrata open data portal as dataset `pzzh-kp68`. This actor queries it directly via the Socrata API — no browser, no login, no scraping.

````

GET https://data.illinois.gov/resource/pzzh-kp68.json
?$where=license\_type='PHARMACY' AND license\_status='ACTIVE'
&$limit=1000&$offset=0
&$order=license\_number ASC

````

Pagination uses `$offset` increments. The actor builds SoQL `$where` clauses from your input filters automatically.

---

### 🔧 Input

```json
{
  "licenseTypes": ["PHARMACY"],
  "descriptions": [],
  "statusFilter": "active_only",
  "counties": [],
  "cities": [],
  "disciplineFilter": "all",
  "issuedAfter": "",
  "maxRecords": 100,
  "pageSize": 1000,
  "requestDelay": 300
}
````

#### Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `licenseTypes` | array | `[]` | Filter by type: `PHARMACY`, `NURSE`, `PHYSICIAN`, `REAL ESTATE` etc. |
| `descriptions` | array | `[]` | Filter by description: `PHARMACIST`, `REGISTERED NURSE` etc. |
| `statusFilter` | string | `all` | `all` / `active_only` / `inactive_only` |
| `counties` | array | `[]` | Illinois county filter: `COOK`, `DUPAGE`, `LAKE` etc. |
| `cities` | array | `[]` | City filter: `CHICAGO`, `SPRINGFIELD` etc. |
| `disciplineFilter` | string | `all` | `all` / `clean_only` / `disciplined_only` |
| `issuedAfter` | string | `""` | Only licenses issued after date (YYYY-MM-DD) |
| `maxRecords` | integer | `0` | Max records (0 = unlimited) |
| `pageSize` | integer | `1000` | Records per API call (max 50000) |
| `requestDelay` | integer | `300` | Delay between API calls (ms) |

***

### 📋 License Categories (100+)

#### 🏥 Healthcare

`PHARMACY` (Pharmacist, Pharmacy Technician) · `NURSE` (RN, LPN, APRN) · `PHYSICIAN` (MD, DO) · `DENTIST` · `PHYSICAL THERAPY` · `CLINICAL PSYCHOLOGY` · `CLINICAL SOCIAL WORKER` · `COUNSELOR` · `OPTOMETRY` · `PODIATRY` · `OCCUPATIONAL THERAPY` · `SPEECH LANGUAGE PATH` · `RESPIRATORY CARE` · `PHYSICIAN ASSISTANT` · `ACUPUNCTURE` · `ATHLETIC TRAINER` · `DIETITIAN`

#### 🔧 Technical

`ARCHITECT` · `PROFESSIONAL ENGINEER` · `STRUCTURAL ENGINEER` · `LAND SURVEYOR` · `HOME INSPECTOR` · `ENVIRONMENTAL HEALTH`

#### 💼 Legal & Financial

`ATTORNEY` · `CPA` · `PUBLIC ACCOUNTANT` · `COLLECTION AGENCY` · `CURRENCY EXCHANGE` · `PAWN BROKER`

#### 🏠 Real Estate

`REAL ESTATE` (Agent, Broker, Appraiser, Home Inspector)

#### 💇 Beauty

`COSMETOLOGY` · `BARBER` · `NAIL TECHNICIAN` · `ESTHETICS`

***

### 📊 License Status Codes

| Status | Meaning |
|---|---|
| `ACTIVE` | License is current and valid |
| `NOT RENEWED` | Expired — not renewed by deadline |
| `EXPIRED` | Past expiration date |
| `REVOKED` | Permanently removed by Board |
| `SUSPENDED` | Temporarily barred |
| `INACTIVE` | Voluntarily inactive |
| `CLOSED` | Business closed |

***

### 📦 Output

#### Example Record

```json
{
  "licenseType": "PHARMACY",
  "description": "PHARMACIST",
  "licenseNumber": "051-012345",
  "licenseStatus": "ACTIVE",
  "isBusiness": false,
  "firstName": "SARAH",
  "middleName": "M",
  "lastName": "JOHNSON",
  "originalIssueDate": "2015-06-12",
  "effectiveDate": "2025-07-01",
  "expirationDate": "2027-06-30",
  "city": "CHICAGO",
  "state": "IL",
  "zip": "60601",
  "county": "COOK",
  "specialtyQualifier": null,
  "controlledSubstanceSchedule": "2, 3, 4, 5",
  "everDisciplined": false,
  "lastModifiedDate": "2025-07-01",
  "licenseCategory": "Healthcare",
  "scrapedAt": "2026-05-06T09:00:00.000Z"
}
```

#### 🔑 Unique Data Fields

| Field | Why It's Valuable |
|---|---|
| `controlledSubstanceSchedule` | Which drug schedules (II-V) the pharmacist can dispense — critical for DEA compliance |
| `everDisciplined` | Boolean flag — instant screening for clean-record verification |
| `disciplineReason` | Full text reason for Board action — no other state provides this in bulk |
| `caseNumber` | Links to specific discipline case for legal research |
| `county` | Illinois county — enables geo-targeted B2B campaigns |

***

### 🎯 Use Cases

#### 🏥 Healthcare Staffing & Credentialing

Verify Illinois pharmacist, nurse, and physician licenses. Joint Commission, NCQA and AOA accept IDFPR as a primary source for credential verification.

#### 💊 Pharmacy Compliance (Controlled Substances)

`controlledSubstanceSchedule` field shows exactly which drug schedules each pharmacist can handle. Critical for DEA compliance audits and pharmacy chain operations.

#### ✅ Discipline Screening

`everDisciplined` + `disciplineReason` enable instant background screening. Filter `disciplined_only` to find all licensees with Board actions across any profession.

#### 🏠 Real Estate Intelligence

Active Illinois real estate agents, brokers, and appraisers. Cook County alone (Chicago metro) has the highest density of real estate professionals in the Midwest.

#### 📈 B2B Lead Generation

1.2M+ records across 100+ professions. Build targeted lead lists by license type, city, county, and status for pharmaceutical sales, medical equipment, legal tech, and SaaS products.

***

### 🏙️ Major Illinois Counties

| County | Major City | Population | Key Industries |
|---|---|---|---|
| Cook | Chicago | 5.2M | Healthcare, Finance, Law |
| DuPage | Naperville | 930K | Pharma, Tech, Healthcare |
| Lake | Waukegan | 700K | Pharma (AbbVie, Takeda HQ) |
| Will | Joliet | 690K | Healthcare, Logistics |
| Kane | Aurora | 520K | Manufacturing, Healthcare |
| Winnebago | Rockford | 280K | Healthcare, Engineering |
| Sangamon | Springfield | 195K | State Government, Healthcare |
| Champaign | Champaign | 210K | University, Research |

***

### 💰 Cost & Performance

| Metric | Value |
|---|---|
| Engine | Socrata API — no browser overhead |
| Runtime | ~30s for 1K records, ~10min for 100K |
| Cost | ~0.002 CU per 1K records |
| Data freshness | Daily |
| Auth required | None |
| Proxy required | None |

***

### ⚠️ Technical Notes

- **Socrata API** — public, no authentication required. App tokens optional but recommended for heavy usage.
- **SoQL queries** — the actor builds `$where` clauses automatically from your input filters. Complex queries are supported.
- **1.2M+ records** — full dataset scrape takes ~20 minutes with default settings. Use filters to narrow scope.
- **Deduplication** — records are deduplicated by `license_number` to avoid duplicates from overlapping pages.
- **Daily updates** — IDFPR refreshes the Socrata dataset daily. `lastModifiedDate` shows when each record was last changed.

***

### 📜 Changelog

| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-05-06 | Initial release — Socrata API, SoQL filtering, 100+ categories, discipline data, CS schedules |

# Actor input Schema

## `licenseTypes` (type: `array`):

Filter by license type. Examples: 'PHARMACY', 'NURSE', 'PHYSICIAN', 'DENTIST', 'REAL ESTATE', 'ARCHITECT', 'CPA', 'COSMETOLOGY', 'ATTORNEY'. Leave empty for all types. Case-insensitive.

## `descriptions` (type: `array`):

Filter by specific description within a license type. Examples: 'PHARMACIST', 'REGISTERED NURSE', 'PHARMACY TECHNICIAN'. Leave empty for all descriptions.

## `statusFilter` (type: `string`):

'all' returns every status. 'active\_only' returns ACTIVE licenses. 'inactive\_only' returns NOT RENEWED, EXPIRED, REVOKED, SUSPENDED etc.

## `counties` (type: `array`):

Filter by Illinois county. Examples: 'COOK', 'DUPAGE', 'LAKE', 'WILL', 'KANE', 'MCHENRY', 'WINNEBAGO', 'PEORIA', 'CHAMPAIGN', 'SANGAMON'. Case-insensitive.

## `cities` (type: `array`):

Filter by city. Examples: 'CHICAGO', 'AURORA', 'NAPERVILLE', 'SPRINGFIELD', 'PEORIA', 'ROCKFORD'. Case-insensitive.

## `disciplineFilter` (type: `string`):

'all' = no filter, 'clean\_only' = Ever Disciplined = N, 'disciplined\_only' = Ever Disciplined = Y.

## `issuedAfter` (type: `string`):

Only return licenses originally issued after this date. Format: YYYY-MM-DD. Leave empty for all dates.

## `maxRecords` (type: `integer`):

Maximum total records to output. Set 0 for unlimited. Full dataset is 1.2M+ records.

## `pageSize` (type: `integer`):

Records per Socrata API call. Max 50000. Higher = fewer requests but more memory.

## `requestDelay` (type: `integer`):

Delay between API requests in milliseconds. Socrata has generous limits but keep above 200ms.

## `proxyConfiguration` (type: `object`):

Optional proxy settings. Usually not needed — Socrata API is public with generous rate limits.

## Actor input object example

```json
{
  "licenseTypes": [
    "PHARMACY"
  ],
  "descriptions": [],
  "statusFilter": "active_only",
  "counties": [],
  "cities": [],
  "disciplineFilter": "all",
  "maxRecords": 100,
  "pageSize": 1000,
  "requestDelay": 300,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `licenseType` (type: `string`):

PHARMACY, NURSE, PHYSICIAN, REAL ESTATE etc.

## `description` (type: `string`):

PHARMACIST, REGISTERED NURSE etc.

## `licenseNumber` (type: `string`):

Unique IDFPR license number

## `licenseStatus` (type: `string`):

ACTIVE / NOT RENEWED / EXPIRED / REVOKED etc.

## `isBusiness` (type: `string`):

true for business entities, false for individuals

## `title` (type: `string`):

Professional title

## `firstName` (type: `string`):

Individual first name

## `middleName` (type: `string`):

Individual middle name

## `lastName` (type: `string`):

Individual last name

## `prefix` (type: `string`):

Name prefix (Dr., Mr. etc.)

## `suffix` (type: `string`):

Name suffix (Jr., III etc.)

## `businessName` (type: `string`):

Business entity name

## `businessDBA` (type: `string`):

Doing Business As name

## `originalIssueDate` (type: `string`):

First license issue date (YYYY-MM-DD)

## `effectiveDate` (type: `string`):

Current license effective date

## `expirationDate` (type: `string`):

License expiration date

## `city` (type: `string`):

City

## `state` (type: `string`):

State abbreviation

## `zip` (type: `string`):

Postal code

## `county` (type: `string`):

Illinois county

## `specialtyQualifier` (type: `string`):

Specialty area or qualifier

## `controlledSubstanceSchedule` (type: `string`):

Controlled substance schedule (II, III, IV, V)

## `delegatedControlledSubstance` (type: `string`):

Delegated controlled substance authority

## `everDisciplined` (type: `string`):

Whether licensee has discipline history (true/false)

## `lastModifiedDate` (type: `string`):

Record last modification date

## `caseNumber` (type: `string`):

Discipline case number

## `action` (type: `string`):

Discipline action type

## `disciplineStartDate` (type: `string`):

Discipline action start date

## `disciplineEndDate` (type: `string`):

Discipline action end date

## `disciplineReason` (type: `string`):

Reason for disciplinary action

## `licenseCategory` (type: `string`):

Healthcare / Legal / Financial / Technical / Beauty

## `scrapedAt` (type: `string`):

ISO timestamp when scraped

# 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 = {
    "licenseTypes": [
        "PHARMACY"
    ],
    "descriptions": [],
    "statusFilter": "active_only",
    "counties": [],
    "cities": [],
    "issuedAfter": "",
    "maxRecords": 100,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/illinois-idfpr-license-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 = {
    "licenseTypes": ["PHARMACY"],
    "descriptions": [],
    "statusFilter": "active_only",
    "counties": [],
    "cities": [],
    "issuedAfter": "",
    "maxRecords": 100,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/illinois-idfpr-license-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "licenseTypes": [
    "PHARMACY"
  ],
  "descriptions": [],
  "statusFilter": "active_only",
  "counties": [],
  "cities": [],
  "issuedAfter": "",
  "maxRecords": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call haketa/illinois-idfpr-license-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=haketa/illinois-idfpr-license-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Illinois License Scraper | IDFPR 1.2M+ Records",
        "description": "Extract 1.2M+ Illinois professional license records from IDFPR Socrata database. Pharmacy, nursing, physician, real estate & 100+ categories with discipline history & controlled substance data.",
        "version": "0.0",
        "x-build-id": "EOkwMYIV9Uu1FWAm4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/haketa~illinois-idfpr-license-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-haketa-illinois-idfpr-license-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/haketa~illinois-idfpr-license-scraper/runs": {
            "post": {
                "operationId": "runs-sync-haketa-illinois-idfpr-license-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/haketa~illinois-idfpr-license-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-haketa-illinois-idfpr-license-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "licenseTypes": {
                        "title": "License Types",
                        "type": "array",
                        "description": "Filter by license type. Examples: 'PHARMACY', 'NURSE', 'PHYSICIAN', 'DENTIST', 'REAL ESTATE', 'ARCHITECT', 'CPA', 'COSMETOLOGY', 'ATTORNEY'. Leave empty for all types. Case-insensitive.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "descriptions": {
                        "title": "License Descriptions (optional)",
                        "type": "array",
                        "description": "Filter by specific description within a license type. Examples: 'PHARMACIST', 'REGISTERED NURSE', 'PHARMACY TECHNICIAN'. Leave empty for all descriptions.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "statusFilter": {
                        "title": "Status Filter",
                        "enum": [
                            "all",
                            "active_only",
                            "inactive_only"
                        ],
                        "type": "string",
                        "description": "'all' returns every status. 'active_only' returns ACTIVE licenses. 'inactive_only' returns NOT RENEWED, EXPIRED, REVOKED, SUSPENDED etc.",
                        "default": "all"
                    },
                    "counties": {
                        "title": "Counties (optional)",
                        "type": "array",
                        "description": "Filter by Illinois county. Examples: 'COOK', 'DUPAGE', 'LAKE', 'WILL', 'KANE', 'MCHENRY', 'WINNEBAGO', 'PEORIA', 'CHAMPAIGN', 'SANGAMON'. Case-insensitive.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "cities": {
                        "title": "Cities (optional)",
                        "type": "array",
                        "description": "Filter by city. Examples: 'CHICAGO', 'AURORA', 'NAPERVILLE', 'SPRINGFIELD', 'PEORIA', 'ROCKFORD'. Case-insensitive.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "disciplineFilter": {
                        "title": "Discipline Filter",
                        "enum": [
                            "all",
                            "clean_only",
                            "disciplined_only"
                        ],
                        "type": "string",
                        "description": "'all' = no filter, 'clean_only' = Ever Disciplined = N, 'disciplined_only' = Ever Disciplined = Y.",
                        "default": "all"
                    },
                    "issuedAfter": {
                        "title": "Issued After Date (optional)",
                        "type": "string",
                        "description": "Only return licenses originally issued after this date. Format: YYYY-MM-DD. Leave empty for all dates."
                    },
                    "maxRecords": {
                        "title": "Max Records",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total records to output. Set 0 for unlimited. Full dataset is 1.2M+ records.",
                        "default": 0
                    },
                    "pageSize": {
                        "title": "Page Size",
                        "minimum": 100,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Records per Socrata API call. Max 50000. Higher = fewer requests but more memory.",
                        "default": 1000
                    },
                    "requestDelay": {
                        "title": "Request Delay (ms)",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Delay between API requests in milliseconds. Socrata has generous limits but keep above 200ms.",
                        "default": 300
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy settings. Usually not needed — Socrata API is public with generous rate limits."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
