# Devpost Hackathon Scraper (`automation-lab/devpost-scraper`) Actor

Scrape hackathons, prizes, themes, deadlines, and organizers from Devpost — 13,000+ competitions. Filter by keyword, status, and challenge type. HTTP-only, no browser needed.

- **URL**: https://apify.com/automation-lab/devpost-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** AI, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## Devpost Hackathon Scraper

### What does it do?

Devpost Hackathon Scraper extracts hackathon listings from [Devpost](https://devpost.com) — the world's largest hackathon platform with **13,000+ competitions** and millions of participants. It uses Devpost's public API to collect structured data on each hackathon, including prizes, deadlines, themes, organizers, and registration counts — with no authentication required.

Data extracted per hackathon:

| Field | Description |
|-------|-------------|
| `id` | Devpost hackathon ID |
| `title` | Hackathon name |
| `url` | Hackathon homepage URL |
| `organizationName` | Organizing company or group |
| `location` | "Online" or city/venue |
| `openState` | Status: open, upcoming, ended |
| `submissionPeriodDates` | Start and end date string |
| `timeLeftToSubmission` | Human-readable countdown |
| `themes` | Theme tags (e.g. Machine Learning/AI, Health) |
| `prizeAmount` | Total prize pool (cleaned string) |
| `cashPrizesCount` | Number of cash prizes |
| `otherPrizesCount` | Number of non-cash prizes |
| `registrationsCount` | Number of registered participants |
| `featured` | Whether Devpost featured this hackathon |
| `winnersAnnounced` | Whether winners have been revealed |
| `inviteOnly` | Whether participation is invite-only |
| `thumbnailUrl` | Hackathon banner image URL |
| `submissionGalleryUrl` | Link to the project gallery |

---

### Who is it for?

#### 🎓 Students and developers looking for hackathons
Find competitions that match your skills, schedule, and interests. Filter by theme (AI, blockchain, health), format (online/in-person), and deadline to surface the best opportunities without manually browsing hundreds of listings.

#### 🏢 Developer relations and community teams
Track hackathons in your domain to find sponsorship opportunities, recruit participants, or monitor the competitive landscape. Scrape by keyword or theme to get an instant market view of active competitions.

#### 📊 Researchers and analysts
Study hackathon trends — prize amounts over time, popular themes, participation growth, and organizer activity. The API returns total registration counts, which serve as a proxy for developer community interest.

#### 🤖 Hackathon aggregators and apps
Power a custom hackathon discovery app, newsletter, or Slack bot with fresh Devpost data without maintaining your own crawlers. The structured JSON output integrates directly with Zapier, Make, Airtable, or any webhook endpoint.

---

### Why use this actor?

- ✅ **No Playwright, no headless browser** — uses Devpost's public JSON API for reliable, fast extraction
- ✅ **Rich filters** — search by keyword, theme, format (online/in-person), and sort order
- ✅ **Pagination handled automatically** — fetches all pages to meet your `maxResults` target
- ✅ **Clean output** — prize amounts stripped of HTML tags, thumbnail URLs made absolute
- ✅ **13,000+ hackathons** — the full Devpost catalog is accessible
- ✅ **Cost-efficient** — HTTP-only actor with 256 MB memory footprint

---

### How to use it

1. **Open the actor** at [https://apify.com/automation-lab/devpost-scraper](https://apify.com/automation-lab/devpost-scraper)
2. **Set your search filters** — enter a keyword, choose a status (open, upcoming, ended), pick a challenge type, and set sort order
3. **Set maxResults** — choose how many hackathons you need (default: 100)
4. **Click Start** — the actor fetches data directly from the Devpost API
5. **Download results** — export as JSON, CSV, Excel, or connect to integrations

---

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQuery` | string | `""` | Keyword to search for (e.g. "AI", "blockchain", "health") |
| `challengeType` | select | `"all"` | Filter by format: `all`, `online`, or `in-person` |
| `status` | select | `"open"` | Filter by status: `all`, `open`, `upcoming`, or `ended` |
| `themes` | array | `[]` | Filter by theme tags (e.g. `["Machine Learning/AI", "Health"]`) |
| `orderBy` | select | `"newest"` | Sort order: `newest`, `prize-amount`, `deadline`, `recently-added`, `submissions-count` |
| `maxResults` | integer | `100` | Maximum number of hackathons to return |
| `maxRequestRetries` | integer | `3` | Retry attempts for failed API requests (advanced) |

#### Theme values

Devpost theme names include (but are not limited to):

- `Machine Learning/AI`
- `Health`
- `Fintech`
- `Social Good`
- `Cybersecurity`
- `Beginner Friendly`
- `Web`
- `Mobile`
- `Open Ended`
- `Design`
- `Productivity`
- `Low/No Code`
- `Blockchain`

---

### Output example

```json
{
  "id": 29377,
  "title": "Build with MeDo Hackathon",
  "url": "https://medo.devpost.com/",
  "organizationName": "Baidu",
  "location": "Online",
  "openState": "open",
  "thumbnailUrl": "https://d112y698adiu2z.cloudfront.net/photos/production/challenge_thumbnails/004/516/528/datas/medium_square.png",
  "submissionPeriodDates": "Apr 09 - May 20, 2026",
  "timeLeftToSubmission": "19 days left",
  "themes": ["Beginner Friendly", "Low/No Code", "Machine Learning/AI"],
  "prizeAmount": "$50,000",
  "cashPrizesCount": 10,
  "otherPrizesCount": 1,
  "registrationsCount": 5159,
  "featured": false,
  "winnersAnnounced": false,
  "inviteOnly": false,
  "submissionGalleryUrl": "https://medo.devpost.com/project-gallery"
}
````

***

### How much does it cost to scrape Devpost hackathons?

The actor uses **Pay-Per-Event (PPE) pricing** — you only pay for what you extract.

| Tier | Per hackathon | Run start (one-time) |
|------|--------------|---------------------|
| Free plan | $0.0012 | $0.005 |
| Starter ($29/mo) | $0.001 | $0.005 |
| Scale ($199/mo) | $0.00078 | $0.005 |
| Business ($999/mo) | $0.0006 | $0.005 |

**Example costs (Starter tier / BRONZE):**

- 🟢 **20 hackathons** (typical search): ~$0.025 total
- 🟡 **100 hackathons** (open hackathons snapshot): ~$0.105 total
- 🔵 **500 hackathons** (weekly monitoring): ~$0.505 total

A typical run of 100 hackathons costs around **$0.105** — less than a coffee. The Apify Free plan gives you $5/month of free usage, covering roughly **4,100 hackathon records** per month at no cost.

***

### Tips and best practices

💡 **Use the `status: open` filter** for ongoing hackathons — this keeps the result set small and relevant.

💡 **Combine theme filters** with a broad keyword search to get very targeted results. For example, `themes: ["Health", "Machine Learning/AI"]` with `searchQuery: ""` surfaces only healthcare-AI competitions.

💡 **Sort by `deadline`** to surface the most time-sensitive opportunities first — great for building a "hackathons closing soon" digest.

💡 **Set `maxResults: 0`** to use the default (100 items). For a full catalog snapshot, set it to 5000+.

💡 **Schedule the actor daily** using Apify's scheduler to keep a fresh hackathon database without manual runs.

💡 **Use the Apify API or Webhooks** to trigger downstream automation — push results to Airtable, send Slack alerts, or email a digest whenever new hackathons appear.

***

### Integrations

#### 🗓️ Hackathon discovery newsletter

**Workflow:** Schedule actor weekly → filter `status: open`, `orderBy: newest` → push results to Airtable → send digest email via SendGrid.

#### 🤖 Slack bot for developer teams

**Workflow:** Schedule actor daily → filter by `themes: ["Machine Learning/AI"]` → compare with yesterday's dataset in Apify Key-Value Store → post new hackathons to `#dev-events` Slack channel via webhook.

#### 📊 Airtable hackathon tracker

**Workflow:** Run actor → use Apify's built-in Airtable integration → automatically populate a base with prize, dates, and registration data for team decision-making.

#### 🔗 Zapier / Make automation

Connect the actor's webhook to any Zapier or Make scenario. Trigger actions when new high-prize hackathons are found, or sync results to Google Sheets for easy sharing.

***

### API usage

#### Node.js (Apify SDK)

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('automation-lab/devpost-scraper').call({
    searchQuery: 'AI',
    status: 'open',
    maxResults: 50,
    orderBy: 'prize-amount',
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} hackathons`);
console.log(items[0].title, items[0].prizeAmount);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("automation-lab/devpost-scraper").call(run_input={
    "searchQuery": "health",
    "status": "open",
    "maxResults": 100,
    "themes": ["Health", "Machine Learning/AI"],
})

items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(f"Got {len(items)} hackathons")
for item in items[:3]:
    print(item["title"], item["prizeAmount"])
```

#### cURL

```bash
## Start a run
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~devpost-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQuery":"blockchain","maxResults":50,"status":"open"}'

## Get dataset items (replace DATASET_ID from run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=json"
```

***

### Using with MCP (Claude, Cursor, VS Code)

Use this actor directly from Claude Code, Claude Desktop, Cursor, or VS Code via the **Apify MCP server**:

#### Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/devpost-scraper"
```

#### Claude Desktop / Cursor / VS Code

Add to your MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=automation-lab/devpost-scraper",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}
```

#### Example prompts for Claude

- *"Find all open AI hackathons on Devpost with prizes over $10,000"*
- *"List the 20 hackathons with the nearest deadlines and export to CSV"*
- *"Get me all health-themed hackathons this month and format them as a Notion table"*
- *"Scrape 50 blockchain hackathons and tell me which have the most registrations"*

***

### How the scraper works

The actor calls Devpost's public REST API at `https://devpost.com/api/hackathons` — the same JSON endpoint the Devpost website uses to render its listing pages. No browser is launched, no JavaScript rendering required.

1. **Build query parameters** from your input — keyword, challenge type, status, themes, and sort order
2. **Fetch page 1** and read `meta.total_count` to know how many results are available
3. **Paginate** through pages (48 results per page) until `maxResults` is reached
4. **Transform each result** — strip HTML from prize amounts, normalize thumbnail URLs to `https://`, flatten theme objects to name arrays
5. **Push to dataset** and charge PPE events

The entire process is HTTP-only (no Playwright), runs in 256 MB memory, and typically completes in under 10 seconds for 100 results.

***

### Legality and terms of service

This actor accesses Devpost's **public API** (`devpost.com/api/hackathons`) — the same endpoint that powers the Devpost website itself. All data collected is publicly available without authentication. No login credentials are required, and the actor does not circumvent any access controls.

Devpost's [Terms of Service](https://devpost.com/legal/terms-of-service) permit viewing and accessing public content. Commercial use of scraped data is subject to your own legal review. The actor is intended for legitimate use cases: research, market analysis, hackathon discovery, and developer tooling. Rate limiting is respected by default — the actor paginates at natural API page boundaries.

***

### FAQ

**Q: How often is the Devpost data updated?**
A: The actor fetches live data from the Devpost API on each run. There is no caching — results reflect the current state of Devpost at the time of the run.

**Q: Can I get past hackathons (ended ones)?**
A: Yes. Set `status: ended` (or `status: all`) to include completed hackathons. Devpost has 13,000+ total competitions on record.

**Q: Why does my themed filter return fewer results than expected?**
A: Theme filters are strict — the hackathon must be tagged with ALL the themes you specify. Try filtering with a single theme at a time, or combine a broad theme with a keyword search.

**Q: The actor returned fewer items than my `maxResults` — is something broken?**
A: No. If the API has fewer matching hackathons than your `maxResults` target, the actor returns all available results. This is normal, especially with narrow filters.

**Q: Can I get more data per hackathon (full description, rules, judging criteria)?**
A: The actor uses the Devpost list API which returns summary data per hackathon. Detailed fields like full description and rules are on each hackathon's detail page. Contact us if you need detail-page extraction.

**Q: The run succeeded but `prizeAmount` shows "$0" — why?**
A: Some hackathons offer only non-cash prizes (swag, credits, mentorship). The `cashPrizesCount` and `otherPrizesCount` fields clarify what's available.

***

### Related scrapers

Looking for more developer community data? Check out these actors by [Automation Lab](https://apify.com/automation-lab):

- [GitHub Repository Scraper](https://apify.com/automation-lab/github-repository-scraper) — scrape GitHub repos, stars, topics, and contributors
- [LinkedIn Profile Scraper](https://apify.com/automation-lab/linkedin-profile-scraper) — extract LinkedIn public profile data
- [Product Hunt Scraper](https://apify.com/automation-lab/product-hunt-scraper) — scrape Product Hunt launches, votes, and makers

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword to search for hackathons (e.g. "AI", "blockchain", "health"). Leave empty to get all hackathons.

## `challengeType` (type: `string`):

Filter by format: online-only, in-person, or all types.

## `status` (type: `string`):

Filter by hackathon status: open (accepting submissions), upcoming (not yet started), ended (finished), or all.

## `themes` (type: `array`):

Filter by theme tags (e.g. Machine Learning/AI, Health, Social Good). Leave empty for all themes.

## `orderBy` (type: `string`):

How to sort results.

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

Maximum number of hackathons to return.

## `maxRequestRetries` (type: `integer`):

Number of retry attempts for failed API requests.

## Actor input object example

```json
{
  "searchQuery": "AI",
  "challengeType": "all",
  "status": "open",
  "themes": [],
  "orderBy": "newest",
  "maxResults": 20,
  "maxRequestRetries": 3
}
```

# Actor output Schema

## `overview` (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 = {
    "searchQuery": "AI",
    "challengeType": "all",
    "status": "open",
    "themes": [],
    "orderBy": "newest",
    "maxResults": 20,
    "maxRequestRetries": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/devpost-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 = {
    "searchQuery": "AI",
    "challengeType": "all",
    "status": "open",
    "themes": [],
    "orderBy": "newest",
    "maxResults": 20,
    "maxRequestRetries": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/devpost-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 '{
  "searchQuery": "AI",
  "challengeType": "all",
  "status": "open",
  "themes": [],
  "orderBy": "newest",
  "maxResults": 20,
  "maxRequestRetries": 3
}' |
apify call automation-lab/devpost-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Devpost Hackathon Scraper",
        "description": "Scrape hackathons, prizes, themes, deadlines, and organizers from Devpost — 13,000+ competitions. Filter by keyword, status, and challenge type. HTTP-only, no browser needed.",
        "version": "0.1",
        "x-build-id": "GdvwIEOBcvJtGSCnK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~devpost-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-devpost-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/automation-lab~devpost-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-devpost-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/automation-lab~devpost-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-devpost-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": {
                    "searchQuery": {
                        "title": "🔍 Search query",
                        "type": "string",
                        "description": "Keyword to search for hackathons (e.g. \"AI\", \"blockchain\", \"health\"). Leave empty to get all hackathons."
                    },
                    "challengeType": {
                        "title": "Challenge type",
                        "enum": [
                            "all",
                            "online",
                            "in-person"
                        ],
                        "type": "string",
                        "description": "Filter by format: online-only, in-person, or all types.",
                        "default": "all"
                    },
                    "status": {
                        "title": "Status",
                        "enum": [
                            "all",
                            "open",
                            "upcoming",
                            "ended"
                        ],
                        "type": "string",
                        "description": "Filter by hackathon status: open (accepting submissions), upcoming (not yet started), ended (finished), or all.",
                        "default": "open"
                    },
                    "themes": {
                        "title": "Themes",
                        "type": "array",
                        "description": "Filter by theme tags (e.g. Machine Learning/AI, Health, Social Good). Leave empty for all themes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "orderBy": {
                        "title": "Sort order",
                        "enum": [
                            "newest",
                            "prize-amount",
                            "deadline",
                            "recently-added",
                            "submissions-count"
                        ],
                        "type": "string",
                        "description": "How to sort results.",
                        "default": "newest"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of hackathons to return.",
                        "default": 100
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of retry attempts for failed API requests.",
                        "default": 3
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
