# Open Data Portal Harvester (`datapilot/open-data-portal-harvester`) Actor

Search and collect datasets from leading government open data portals with a single keyword. This Actor searches Data.gov (US) and CKAN-powered portals like Data.gov.uk to discover publicly available datasets, metadata, download links, licensing information, organizations, and update dates.

- **URL**: https://apify.com/datapilot/open-data-portal-harvester.md
- **Developed by:** [Data Pilot](https://apify.com/datapilot) (community)
- **Categories:** AI, Agents, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 scraped results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Open Data Portal Harvester

🏛️ **Open Data Portal Harvester** is a powerful Apify Actor designed to discover, track, and collect datasets from multiple government open data portals including Data.gov (US) and Data.gov.uk (UK). This tool provides comprehensive **Open Data Portal Harvester** intelligence including dataset titles, download URLs, publishing organizations, licenses, and last-updated dates. Whether you're building a data catalog, monitoring government data releases, or conducting open data research, the Open Data Portal Harvester delivers actionable **Open Data Portal Harvester** results efficiently.

With multi-portal integration across Data.gov v4 and CKAN-based portals, keyword search, automatic resource format prioritization, and reliable Apify Dataset delivery, the Open Data Portal Harvester ensures comprehensive **Open Data Portal Harvester** coverage. It focuses on key **Open Data Portal Harvester** signals including dataset identifiers, download links, organizations, and licensing, making it an essential tool for open data research and government data intelligence.

---

### 📋 Table of Contents

- [Features](#-features)
- [Data Sources](#-data-sources)
- [How It Works](#-how-it-works)
- [Input](#-input)
- [Output](#-output)
- [Technical Stack](#-technical-stack)
- [Data Fields](#-data-fields-explained)
- [Use Cases](#-use-cases)
- [Quick Start](#-quick-start)
- [Configuration](#-configuration)
- [Performance](#-performance)
- [Billing](#-billing)
- [Important Notes](#-important-notes)
- [Changelog](#-changelog)
- [Support](#-support--feedback)
- [License & Legal](#-license--legal)

---

### 🔥 Features

- **Data.gov v4 Integration** – Direct integration with the U.S. government's official open data API.
- **CKAN Integration** – Compatible with any CKAN-powered open data portal, including Data.gov.uk.
- **Multi-Portal Intelligence** – Aggregates **Open Data Portal Harvester** results from multiple sources in a single run.
- **Keyword Search** – Search datasets across portals by topic, agency, or subject.
- **Automatic Pagination** – Walks through result pages automatically until the limit or portal is exhausted.
- **Smart Download URL Selection** – Prioritizes CSV and JSON resource formats when available.
- **Organization Tracking** – Captures the publishing organization or agency for each dataset.
- **License Capture** – Records the dataset's license terms where available.
- **Last-Updated Tracking** – Captures the most recent modification date for each dataset.
- **Resource Counting** – Reports how many resources/files each dataset includes.
- **Per-Portal Limiting** – Configurable maximum datasets per portal to control run size.
- **Residential Proxy Support** – Optional Apify residential proxy for reliable access.
- **Real-Time Dataset Push** – Pushes results to Apify Dataset with metadata.
- **Detailed Logging** – Comprehensive logging of portal progress and dataset counts.
- **Asyncio-Friendly** – Non-blocking async/await architecture with httpx.
- **Graceful Error Handling** – Skips a failing portal without stopping the whole run.

---

### 📊 Data Sources

#### **1. Data.gov (US)**

- **Authority**: Official U.S. government open data portal
- **API**: Data.gov v4 Search API (`api.gsa.gov/technology/datagov/v4`)
- **Coverage**: Federal agency datasets across all sectors
- **Data**: Dataset metadata, DCAT distribution links, organization, license
- **Access**: Requires an API key (a `DEMO_KEY` works for light usage)

#### **2. Data.gov.uk (UK)**

- **Authority**: UK government open data portal
- **API**: CKAN Action API (`/api/3/action/package_search`)
- **Coverage**: UK government and public sector datasets
- **Data**: Dataset metadata, resource links, organization, license
- **Access**: No API key required

> The Actor's CKAN support is portal-agnostic — any CKAN-based open data portal can be added by supplying its base URL.

---

### ⚙️ How It Works

The Open Data Portal Harvester accepts a search keyword and queries each configured portal using the appropriate API for its type — Data.gov v4 for `datagov_v4` portals, and the CKAN Action API for `ckan` portals. For each dataset found, it extracts the title, dataset identifier, best available download URL, publishing organization, license, resource count, and last-updated date. Pagination continues automatically until the portal is exhausted or the configured per-portal limit is reached. Results from all portals are combined and pushed to the dataset in a single batch.

**Key Processing Steps:**

1. **Input Parsing** – Accept search keyword, per-portal limit, and API key
2. **Proxy Setup** – Optionally configure Apify residential proxy
3. **Portal Loop** – Iterate through each configured open data portal
4. **Data.gov v4 Query** – Paginate via `after` cursor for US datasets
5. **CKAN Query** – Paginate via `start`/`rows` for UK/CKAN datasets
6. **Download URL Selection** – Prefer CSV, then JSON, then any available link
7. **Metadata Extraction** – Capture organization, license, resource count, last updated
8. **Timestamp Tagging** – Record scrape time per dataset
9. **Error Isolation** – Log and skip any portal that fails without halting the run
10. **Dataset Push** – Push combined results in a single batch
11. **Summary Logging** – Report per-portal and total dataset counts

**Key Benefits:**

- Monitor new dataset releases across government open data portals
- Build a searchable catalog of public datasets
- Track dataset licensing and update frequency
- Compare data availability across US and UK sources
- Feed downstream research, journalism, or civic tech pipelines

---

### 📥 Input

The Actor accepts the following input parameters:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `keyword` | string | `""` | Search keyword for the **Open Data Portal Harvester** (e.g., "climate", "housing") |
| `max_datasets_per_portal` | integer | `50` | Maximum number of datasets to collect per portal (`0` = no limit) |
| `datagov_api_key` | string | `"DEMO_KEY"` | API key for the Data.gov v4 Search API |
| `useApifyProxy` | boolean | `true` | Enable Apify Proxy |
| `apifyProxyGroups` | array | `["RESIDENTIAL"]` | Proxy group configuration |

**Example Input:**

```json
{
  "keyword": "climate change",
  "max_datasets_per_portal": 50,
  "datagov_api_key": "DEMO_KEY",
  "useApifyProxy": true
}
````

**Search for Housing Datasets:**

```json
{
  "keyword": "housing",
  "max_datasets_per_portal": 100
}
```

***

### 📤 Output

The Actor pushes **Open Data Portal Harvester** records with the following structure:

| Field | Type | Description |
|-------|------|-------------|
| `dataset_id` | string | Unique identifier or slug for the dataset |
| `title` | string | Dataset title |
| `download_url` | string | Best available direct download link (CSV/JSON preferred) |
| `source` | string | Name of the originating portal |
| `metadata.organization` | string | Publishing organization or agency |
| `metadata.license` | string | Dataset license, where available |
| `metadata.num_resources` | integer | Number of resources/files attached to the dataset |
| `metadata.last_updated` | string | Date the dataset was last modified |
| `metadata.notes` | string | Truncated dataset description (up to 300 characters) |
| `scraped_at` | string | ISO 8601 timestamp of when the dataset was scraped |

**Example Open Data Portal Harvester Record:**

```json
{
  "dataset_id": "climate-risk-index-2025",
  "title": "National Climate Risk Index Dataset",
  "download_url": "https://catalog.data.gov/dataset/climate-risk-index-2025.csv",
  "source": "Data.gov (US)",
  "metadata": {
    "organization": "National Oceanic and Atmospheric Administration",
    "license": "Public Domain",
    "num_resources": 4,
    "last_updated": "2026-05-10",
    "notes": "County-level climate risk scores derived from historical weather and disaster data."
  },
  "scraped_at": "2026-07-25T12:00:00"
}
```

***

### 🧰 Technical Stack

- **APIs:** Data.gov v4 Search API, CKAN Action API (`package_search`)
- **HTTP Client:** httpx for async HTTP requests
- **JSON Parsing:** Standard json library
- **Date Parsing:** datetime for standardized timestamps
- **Async:** asyncio for non-blocking, paginated fetching
- **Pagination:** Cursor-based (`after`) for Data.gov v4, offset-based (`start`/`rows`) for CKAN
- **Proxy:** Apify Proxy with `RESIDENTIAL` configuration
- **Logging:** Apify Actor logging system
- **Platform:** Apify Actor serverless environment

***

### 📊 Data Fields Explained

#### **Dataset Identification**

- **dataset\_id**: Unique identifier or slug for the dataset
- **title**: Dataset title
- **source**: Which portal the dataset came from

#### **Access**

- **download\_url**: Best direct link to the dataset's data file

#### **Publisher Info**

- **metadata.organization**: Agency or organization that published the dataset
- **metadata.license**: License terms attached to the dataset

#### **Content Summary**

- **metadata.num\_resources**: How many files/resources are attached
- **metadata.last\_updated**: When the dataset was last modified
- **metadata.notes**: Short description excerpt

***

### 🎯 Use Cases

- **Open Data Cataloging** – Build a unified catalog of **Open Data Portal Harvester** results across portals
- **Civic Tech Research** – Power dashboards and apps built on public government data
- **Journalism** – Discover fresh datasets relevant to ongoing reporting
- **Academic Research** – Collect datasets for empirical studies
- **Policy Analysis** – Track newly published or updated government datasets
- **Data Licensing Audits** – Review license terms across many datasets at once
- **Cross-Portal Comparison** – Compare US vs. UK data availability on the same topic
- **Dataset Monitoring** – Re-run periodically to catch new or updated datasets

***

### 🚀 Quick Start

#### **1. Prepare Input**

Go to Apify Console and enter:

```json
{
  "keyword": "renewable energy",
  "max_datasets_per_portal": 50
}
```

#### **2. Run the Actor**

Click **Start**. The Actor will:

- Query Data.gov (US) via the v4 Search API
- Query Data.gov.uk (UK) via the CKAN API
- Extract dataset metadata and download URLs
- Push combined results to the Dataset

#### **3. Monitor Progress**

Console shows:

```
Initializing Open Data Portal Harvester for Keyword: 'renewable energy'
[Data.gov v4] Fetching datasets from Data.gov (US)...
 -> Data.gov (US): 42 dataset(s) fetched.
[CKAN] Fetching datasets from Data.gov.uk (UK)...
 -> Data.gov.uk (UK): 37 dataset(s) fetched.
Done! Saved 79 datasets to Apify Dataset.
```

#### **4. View & Download Results**

- **Results Tab**: All **Open Data Portal Harvester** records
- **Export**: JSON, CSV, Excel, or HTML
- **Filter**: By source portal or organization
- **API Access**: Available via the Apify API

***

### ⚙️ Configuration

Broad topic search:

```json
{
  "keyword": "population"
}
```

Narrow, high-volume search:

```json
{
  "keyword": "air quality monitoring",
  "max_datasets_per_portal": 200
}
```

Custom Data.gov API key:

```json
{
  "keyword": "transportation",
  "datagov_api_key": "your-api-key-here"
}
```

***

### 📈 Performance

#### **Processing Speed**

- Paginated fetching with a short delay between pages to respect rate limits
- \~50 datasets per page per portal
- Scales linearly with `max_datasets_per_portal`

#### **Resource Usage**

- Memory: Low-to-moderate, depending on result volume
- Network: Proportional to number of datasets and portals queried
- API calls: One paginated request cycle per portal

***

### 💰 Billing

#### **Batch Billing**

- **Billing Model:** Batch push (not per-dataset PPE)
- **Typical Cost:** Proportional to total datasets fetched across portals
- **Efficiency:** Pagination and per-portal limits keep runs predictable

***

### ⚠️ Important Notes

#### **Legal & Compliance**

- **Fair Use**: Respects each portal's public API and rate limits
- **Attribution**: Preserves the originating portal and organization for each dataset
- **Accuracy**: Data as recorded in the source portal's catalog
- **Verification**: Verify licensing terms directly with the source portal before reuse
- **Legal**: Not legal advice — review each dataset's license before redistribution

#### **Data Quality**

- **Freshness**: Reflects portal catalog state at time of run
- **Completeness**: Dependent on what each portal's API exposes
- **Accuracy**: Sourced directly from official government APIs
- **Verification**: Cross-check critical datasets against the live portal

#### **Best Practices**

- Use specific keywords to reduce noise in results
- Set a reasonable `max_datasets_per_portal` to control run size
- Check `metadata.license` before redistributing any dataset
- Re-run periodically to catch newly published datasets
- Supply your own Data.gov API key for higher rate limits than `DEMO_KEY`
- Add additional CKAN portals by extending the `PORTALS` list with their base URL

***

### 📦 Changelog

#### v1.0.0 (July 2026)

**Initial Release:**

- Data.gov v4 API integration
- CKAN Action API integration (Data.gov.uk and other CKAN portals)
- Keyword-based dataset search across portals
- Cursor-based pagination for Data.gov v4
- Offset-based pagination for CKAN portals
- Smart download URL selection (CSV/JSON preferred)
- Organization and license metadata extraction
- Resource count and last-updated tracking
- Per-portal dataset limiting
- Apify residential proxy support
- Real-time Dataset push
- Per-portal error isolation and logging
- Asyncio + httpx async architecture

***

### 🧑‍💻 Support & Feedback

- **Issues:** Submit via Apify console with the keyword used
- **Documentation:** Check the Actor details page
- **Community:** Apify forum discussions
- **Feature Requests:** Suggest additional open data portals to support
- **Bug Reports:** Include the keyword and error details

***

### 📄 License & Legal

**Terms of Use:**

- Use for legitimate open data research
- Respect each portal's Terms of Service and rate limits
- Review individual dataset licenses before redistribution
- Comply with applicable data protection and reuse laws
- Use data responsibly

**Disclaimer:**
Open Data Portal Harvester is provided as-is for research purposes. Users are responsible for compliance with each source portal's ToS and licensing terms. This is not legal advice.

***

### 🎉 Get Started Today

**Deploy now for Open Data Portal Harvester research!**

Use for:

- 📊 Dataset Cataloging
- 🔍 Government Data Monitoring
- 💡 Civic Tech Projects
- 📈 Cross-Portal Comparison
- 🎯 Open Data Intelligence

**Perfect for:**

- Data Journalists
- Civic Technologists
- Researchers
- Policy Analysts
- Data Catalog Builders

***

**Last Updated:** July 2026
**Version:** 1.0.0
**Status:** Production Ready
**Platform:** Apify Actor
**Architecture:** Async/Await
**Data Sources:** Data.gov (US), Data.gov.uk (UK), extensible CKAN portals

***

### 📚 Related Tools

- Public Company Job Postings Scraper
- Investor Presentation Scraper
- Salary Trends Scraper

***

### ⚖️ Open Data Portal Harvester Excellence

This Actor is optimized for **Open Data Portal Harvester** research with:

- ✅ Multi-portal Data.gov v4 and CKAN integration
- ✅ Smart download URL selection
- ✅ Organization and license tracking
- ✅ Automatic pagination
- ✅ Per-portal error isolation
- ✅ Real-time Dataset push
- ✅ Production-ready code

# Actor input Schema

## `keyword` (type: `string`):

Search keyword for open datasets (e.g. climate, transport, health). Leave blank for latest.

## `max_datasets_per_portal` (type: `integer`):

Maximum datasets to fetch per portal (0 = no limit).

## `datagov_api_key` (type: `string`):

API key for api.data.gov (uses DEMO\_KEY by default).

## `useApifyProxy` (type: `boolean`):

Recommended to prevent blocking from public open data APIs.

## `apifyProxyGroups` (type: `array`):

Select proxy networks (RESIDENTIAL is highly recommended).

## Actor input object example

```json
{
  "keyword": "climate",
  "max_datasets_per_portal": 50,
  "datagov_api_key": "DEMO_KEY",
  "useApifyProxy": true,
  "apifyProxyGroups": [
    "RESIDENTIAL"
  ]
}
```

# 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 = {
    "keyword": "climate",
    "datagov_api_key": "DEMO_KEY"
};

// Run the Actor and wait for it to finish
const run = await client.actor("datapilot/open-data-portal-harvester").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 = {
    "keyword": "climate",
    "datagov_api_key": "DEMO_KEY",
}

# Run the Actor and wait for it to finish
run = client.actor("datapilot/open-data-portal-harvester").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 '{
  "keyword": "climate",
  "datagov_api_key": "DEMO_KEY"
}' |
apify call datapilot/open-data-portal-harvester --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=datapilot/open-data-portal-harvester",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Open Data Portal Harvester",
        "description": "Search and collect datasets from leading government open data portals with a single keyword. This Actor searches Data.gov (US) and CKAN-powered portals like Data.gov.uk to discover publicly available datasets, metadata, download links, licensing information, organizations, and update dates.",
        "version": "0.0",
        "x-build-id": "HVbWHLtuZDFgSq94K"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datapilot~open-data-portal-harvester/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datapilot-open-data-portal-harvester",
                "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/datapilot~open-data-portal-harvester/runs": {
            "post": {
                "operationId": "runs-sync-datapilot-open-data-portal-harvester",
                "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/datapilot~open-data-portal-harvester/run-sync": {
            "post": {
                "operationId": "run-sync-datapilot-open-data-portal-harvester",
                "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": {
                    "keyword": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Search keyword for open datasets (e.g. climate, transport, health). Leave blank for latest."
                    },
                    "max_datasets_per_portal": {
                        "title": "Max Datasets Per Portal",
                        "type": "integer",
                        "description": "Maximum datasets to fetch per portal (0 = no limit).",
                        "default": 50
                    },
                    "datagov_api_key": {
                        "title": "Data.gov API Key",
                        "type": "string",
                        "description": "API key for api.data.gov (uses DEMO_KEY by default)."
                    },
                    "useApifyProxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Recommended to prevent blocking from public open data APIs.",
                        "default": true
                    },
                    "apifyProxyGroups": {
                        "title": "Proxy Groups",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select proxy networks (RESIDENTIAL is highly recommended).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "RESIDENTIAL",
                                "DATACENTER"
                            ]
                        },
                        "default": [
                            "RESIDENTIAL"
                        ]
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
