# GitHub Profile Reverse Fast Lookup (`trev0n/github-profile-reverse-lookup-scraper`) Actor

Find GitHub profiles from emails, full names, or username fragments. Returns enriched profile data — login, ID, avatar, bio, company, location, repo counts, and more.

- **URL**: https://apify.com/trev0n/github-profile-reverse-lookup-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** Lead generation, Social media, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 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

## 🔎 GitHub Profile Reverse Lookup

🎯 **Find any developer on GitHub using just an email, a name, or a partial username — instantly turn fragments of identity into verified developer profiles.**

This scraper takes lists of emails, full names, or username fragments and returns the matching GitHub profiles with rich metadata: username, user ID, avatar, bio, company, location, public email, repository counts, follower stats, social links, and more. Perfect for OSINT, recruiting, lead enrichment, due diligence, and developer research.

### 🚀 What Does It Do?

This scraper automatically resolves identity fragments into real GitHub profiles and collects **structured, ready-to-use data** for every match. No manual searching, no copy-pasting — just feed it your list and download the results.

💡 **Three lookup modes — mix and match in a single run:**

1. **📧 Email Lookup** — Find the GitHub account behind any email address. Works against the public user index _and_ (with a token) the public commit history — the same trick recruiters and security researchers use to deanonymize developers.
2. **👤 Name Lookup** — Find every GitHub user matching a full name. Returns the top candidates so you can disambiguate by company or location.
3. **🔤 Username Fragment Lookup** — Recover full handles from partial or remembered usernames.

### 👥 Who Is This For?

| 🏢 Use Case                     | 💬 How It Helps                                                                                          |
| ------------------------------- | -------------------------------------------------------------------------------------------------------- |
| 🔍 **OSINT Investigators**      | Resolve emails to developer identities, cross-reference handles across platforms, build subject profiles |
| 📈 **Recruiters & Sourcers**    | Turn LinkedIn names or resume emails into GitHub portfolios with repo counts and tech footprint          |
| 📣 **B2B Sales & Lead Gen**     | Enrich developer leads with public emails, company, location, and websites                               |
| 🛡️ **Security Researchers**     | Map breach-data emails to active GitHub identities, audit committer footprints                           |
| 🤝 **DevRel & Community Teams** | Find contributors, reach out to power users, build outreach lists                                        |
| 🕵️ **Due Diligence Analysts**   | Validate that a person claiming to be a developer actually has a GitHub presence                         |

### ✨ Features

- 📧 **Email-to-Profile Resolution** — The single most valuable lookup direction on GitHub
- 👤 **Name & Username Search** — Auto-detects what kind of input you provide
- 🔬 **Commit Search Fallback** — When the public user index fails, dig through public commits
- 🪪 **Full Profile Enrichment** — Bio, company, location, blog, Twitter, public email, hireable flag
- 📊 **Activity Stats** — Followers, following, public repos, public gists, account age
- 🏢 **Optional Organization Filtering** — Restrict to user accounts or include orgs
- 🎛️ **Smart Filters** — Mix emails, names, and fragments in one run; cap matches per query
- ⚡ **Fast & Scalable** — Process thousands of search terms per run with built-in rate limiting
- 🧹 **Deduplication** — Same login won't appear twice for the same search term
- 🔐 **Token Support** — Bring your own GitHub token for 5,000 req/h instead of 60
- 📤 **Export Anywhere** — Download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

### 🎛️ Filters & Options

| Option                         | What It Does                                                                       |
| ------------------------------ | ---------------------------------------------------------------------------------- |
| 🧩 **Search Terms**            | Mixed list of emails, names, and usernames — the actor auto-detects each           |
| 📧 **Emails**                  | Force-classify entries as emails, bypassing auto-detection                         |
| 👤 **Full Names**              | Force-classify entries as display names                                            |
| 🔤 **Username Fragments**      | Force-classify entries as partial GitHub logins                                    |
| 🔑 **GitHub Token**            | Optional Personal Access Token — unlocks commit search and 80x higher rate limits  |
| 🔢 **Max Results Per Query**   | How many matches to keep per search term — 1 for emails, 5–10 for names            |
| 🪪 **Enrich Profile**          | Fetch full profile metadata for every match (bio, location, follower counts, etc.) |
| 🏢 **Include Organizations**   | Whether to also return GitHub organization accounts in results                     |
| 🔬 **Use Commit Search**       | Fall back to public commit history when an email isn't in the user index           |
| ⚙️ **Max Concurrency**         | How many lookups to run in parallel                                                |
| ⏱️ **Max Requests Per Minute** | Hard ceiling on outbound GitHub API calls — keeps you under the rate limit         |
| 🌐 **Proxy Configuration**     | Optional proxy settings — datacenter IPs are sufficient                            |

### 📦 What You Get (Output Fields)

Every matched profile includes:

#### Identity

| Field       | Example                                            |
| ----------- | -------------------------------------------------- |
| searchTerm  | `brad@danga.com`                                   |
| searchType  | `email`                                            |
| matchSource | `search-commits`                                   |
| username    | `bradfitz`                                         |
| userId      | `2621`                                             |
| userType    | `User`                                             |
| profileUrl  | `https://github.com/bradfitz`                      |
| avatarUrl   | `https://avatars.githubusercontent.com/u/2621?v=4` |

#### Profile

| Field           | Example                |
| --------------- | ---------------------- |
| name            | `Brad Fitzpatrick`     |
| bio             | `https://bradfitz.com` |
| email           | `brad@danga.com`       |
| company         | `Tailscale`            |
| location        | `Sunnyvale, CA`        |
| blog            | `https://bradfitz.com` |
| twitterUsername | `bradfitz`             |
| hireable        | `null`                 |

#### Activity Stats

| Field       | Example                |
| ----------- | ---------------------- |
| publicRepos | `247`                  |
| publicGists | `89`                   |
| followers   | `5210`                 |
| following   | `42`                   |
| createdAt   | `2008-10-28T18:31:11Z` |
| updatedAt   | `2026-04-22T08:12:33Z` |

#### Run Metadata

| Field     | Example                    |
| --------- | -------------------------- |
| scrapedAt | `2026-05-03T09:46:00.000Z` |
| error     | `null`                     |

### 📊 Example Output

```json
{
    "searchTerm": "brad@danga.com",
    "searchType": "email",
    "matchSource": "search-commits",
    "username": "bradfitz",
    "userId": 2621,
    "userType": "User",
    "profileUrl": "https://github.com/bradfitz",
    "avatarUrl": "https://avatars.githubusercontent.com/u/2621?v=4",
    "name": "Brad Fitzpatrick",
    "bio": "https://bradfitz.com",
    "email": "brad@danga.com",
    "company": "Tailscale",
    "location": "Sunnyvale, CA",
    "blog": "https://bradfitz.com",
    "twitterUsername": "bradfitz",
    "hireable": null,
    "publicRepos": 247,
    "publicGists": 89,
    "followers": 5210,
    "following": 42,
    "createdAt": "2008-10-28T18:31:11Z",
    "updatedAt": "2026-04-22T08:12:33Z",
    "scrapedAt": "2026-05-03T09:46:00.000Z",
    "error": null
}
````

### 📋 Dataset Views

The Apify Console gives you **3 ready-made table views** to quickly browse your results:

| View                   | What It Shows                                                                            |
| ---------------------- | ---------------------------------------------------------------------------------------- |
| 📊 **Overview**        | Search term, username, user ID, name, company, location, profile URL, avatar             |
| 🎯 **Lead Generation** | Search term, username, name, public email, company, location, website, Twitter, hireable |
| 📈 **Activity Stats**  | Username, public repos, public gists, followers, following, account age                  |

### ❓ FAQ

**🤔 How can the scraper find a GitHub user from just an email?**
GitHub exposes two public surfaces tying emails to users: the user search index (when a developer has set their email to public) and the commit history (any email used to author a public commit is searchable). With a token, this scraper queries both — that's why it works even when the email is not on the user's profile page.

**🤔 Do I need a GitHub token?**
For occasional lookups, no — GitHub allows 60 unauthenticated requests per hour and ~10 search calls per minute. For batch jobs or commit-based email lookups, yes — a free Personal Access Token raises this to 5,000 requests per hour.

**🤔 What if the email is not found?**
The actor returns a record with `error: "No GitHub profile found..."` so you can clearly distinguish "no match" from "lookup failed". Names and username fragments rarely return zero results.

**🤔 Can I export the data?**
Yes — JSON, CSV, Excel, XML, HTML, RSS. You can also push data directly to Google Sheets, Zapier, Make, or any webhook/API endpoint.

**🤔 How often should I run this?**
Profile data changes slowly. Re-run weekly or monthly to refresh stats (followers, repos), or whenever you have a new batch of emails or names to resolve.

**🤔 Does it work with proxies?**
Yes — datacenter proxies work fine. GitHub does not require residential IPs. Proxies are mostly useful for splitting unauthenticated rate limits across multiple IPs.

**🤔 Can it find private profiles or hidden emails?**
No. The scraper only reads publicly-accessible information. It does not bypass authentication, scrape login-walled pages, or access GitHub's private data.

### 🛠️ Need Custom Filters or Features?

**I'm happy to customize this scraper for your specific needs!** 🤝

Whether you need:

- 🎯 Additional filters (filter by minimum followers, account age, location, language, repository topics)
- 📊 Extra data fields or custom output formats (e.g. pinned repos, top languages, recent activity)
- 🔄 Integration with your CRM, Google Sheets, or database
- ⏰ Scheduled scraping with automatic deduplication and incremental enrichment
- 🌐 Cross-referencing with other developer platforms (GitLab, Bitbucket, Stack Overflow, LinkedIn) alongside GitHub

👉 **Don't hesitate to reach out via private message** — I respond quickly and I'm always open to building exactly what you need. No request is too small or too specific!

### ⚖️ Legal & Ethical Use

This scraper collects **only publicly available information** from GitHub. It does not access private repositories, hidden emails, authenticated content, or bypass any access controls. Please use the data responsibly and in compliance with applicable laws, GitHub's Terms of Service, and privacy regulations such as GDPR and CCPA.

# Actor input Schema

## `searchTerms` (type: `array`):

Mixed list of emails, full names, or username fragments. The actor auto-detects the type of each entry. Examples: 'jane@example.com', 'Jane Doe', 'janedoe'.

## `emails` (type: `array`):

Optional list of email addresses to look up explicitly. Combined with 'searchTerms'. Use this when you only have emails — recommended for OSINT and lead enrichment.

## `names` (type: `array`):

Optional list of full names to look up explicitly. Combined with 'searchTerms'. Matches against the user's display name on GitHub.

## `usernameQueries` (type: `array`):

Optional list of username fragments or partial logins. Combined with 'searchTerms'. Useful when you remember part of a developer's handle.

## `githubToken` (type: `string`):

Personal Access Token (classic or fine-grained) for higher rate limits (5,000 req/h vs 60 unauthenticated) and access to commit search — which is the most reliable way to match an email to a user. Strongly recommended for batch lookups. Generate at: https://github.com/settings/tokens

## `maxResultsPerQuery` (type: `integer`):

Maximum number of matching profiles returned per search term. For email lookups, 1 is usually enough. For name searches, increase to 5–10 to capture homonyms.

## `enrichProfile` (type: `boolean`):

Fetch full profile data (bio, company, location, public email, repo counts, follower counts, blog, Twitter handle, hireable flag, dates) for every match. Disable for the bare minimum — login, id, avatar.

## `includeOrganizations` (type: `boolean`):

Also return organization accounts that match. Disable to restrict results to user accounts only.

## `useCommitSearch` (type: `boolean`):

When an email is not found in the public user index, fall back to searching public commits authored with that email. This is the most powerful trick for OSINT but requires a GitHub token.

## `maxConcurrency` (type: `integer`):

How many search terms to process in parallel. GitHub's secondary rate limits apply across the board — keep this low (1–4) unless you have a dedicated token.

## `maxRequestsPerMinute` (type: `integer`):

Hard ceiling on outbound requests per minute. GitHub allows ~30 search calls/min authenticated, ~10/min unauthenticated. Lower this if you see 429 errors.

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

Optional proxy settings. Datacenter proxies are sufficient — GitHub's API does not require residential IPs. Useful for splitting unauthenticated rate limits across multiple IPs.

## Actor input object example

```json
{
  "searchTerms": [
    "brad@danga.com",
    "Linus Torvalds",
    "torvalds"
  ],
  "maxResultsPerQuery": 5,
  "enrichProfile": true,
  "includeOrganizations": false,
  "useCommitSearch": true,
  "maxConcurrency": 2,
  "maxRequestsPerMinute": 30
}
```

# Actor output Schema

## `overview` (type: `string`):

Compact view: search term, type, username, ID, name, company, location, profile URL, avatar.

## `leads` (type: `string`):

Outreach-friendly view: username, name, public email, company, location, website, Twitter, hireable flag.

## `stats` (type: `string`):

Account activity: public repos, gists, followers, following, account age.

# 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 = {
    "searchTerms": [
        "brad@danga.com",
        "Linus Torvalds",
        "torvalds"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/github-profile-reverse-lookup-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 = { "searchTerms": [
        "brad@danga.com",
        "Linus Torvalds",
        "torvalds",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("trev0n/github-profile-reverse-lookup-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 '{
  "searchTerms": [
    "brad@danga.com",
    "Linus Torvalds",
    "torvalds"
  ]
}' |
apify call trev0n/github-profile-reverse-lookup-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=trev0n/github-profile-reverse-lookup-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GitHub Profile Reverse Fast Lookup",
        "description": "Find GitHub profiles from emails, full names, or username fragments. Returns enriched profile data — login, ID, avatar, bio, company, location, repo counts, and more.",
        "version": "0.0",
        "x-build-id": "Rf3zVD8eaLfaZM0k6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/trev0n~github-profile-reverse-lookup-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-trev0n-github-profile-reverse-lookup-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/trev0n~github-profile-reverse-lookup-scraper/runs": {
            "post": {
                "operationId": "runs-sync-trev0n-github-profile-reverse-lookup-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/trev0n~github-profile-reverse-lookup-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-trev0n-github-profile-reverse-lookup-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": {
                    "searchTerms": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "Mixed list of emails, full names, or username fragments. The actor auto-detects the type of each entry. Examples: 'jane@example.com', 'Jane Doe', 'janedoe'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "emails": {
                        "title": "Emails",
                        "type": "array",
                        "description": "Optional list of email addresses to look up explicitly. Combined with 'searchTerms'. Use this when you only have emails — recommended for OSINT and lead enrichment.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "names": {
                        "title": "Full Names",
                        "type": "array",
                        "description": "Optional list of full names to look up explicitly. Combined with 'searchTerms'. Matches against the user's display name on GitHub.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "usernameQueries": {
                        "title": "Username Fragments",
                        "type": "array",
                        "description": "Optional list of username fragments or partial logins. Combined with 'searchTerms'. Useful when you remember part of a developer's handle.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "githubToken": {
                        "title": "GitHub Token (optional)",
                        "type": "string",
                        "description": "Personal Access Token (classic or fine-grained) for higher rate limits (5,000 req/h vs 60 unauthenticated) and access to commit search — which is the most reliable way to match an email to a user. Strongly recommended for batch lookups. Generate at: https://github.com/settings/tokens"
                    },
                    "maxResultsPerQuery": {
                        "title": "Max Results Per Query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of matching profiles returned per search term. For email lookups, 1 is usually enough. For name searches, increase to 5–10 to capture homonyms.",
                        "default": 5
                    },
                    "enrichProfile": {
                        "title": "Enrich Profile",
                        "type": "boolean",
                        "description": "Fetch full profile data (bio, company, location, public email, repo counts, follower counts, blog, Twitter handle, hireable flag, dates) for every match. Disable for the bare minimum — login, id, avatar.",
                        "default": true
                    },
                    "includeOrganizations": {
                        "title": "Include Organizations",
                        "type": "boolean",
                        "description": "Also return organization accounts that match. Disable to restrict results to user accounts only.",
                        "default": false
                    },
                    "useCommitSearch": {
                        "title": "Use Commit Search for Emails",
                        "type": "boolean",
                        "description": "When an email is not found in the public user index, fall back to searching public commits authored with that email. This is the most powerful trick for OSINT but requires a GitHub token.",
                        "default": true
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many search terms to process in parallel. GitHub's secondary rate limits apply across the board — keep this low (1–4) unless you have a dedicated token.",
                        "default": 2
                    },
                    "maxRequestsPerMinute": {
                        "title": "Max Requests Per Minute",
                        "minimum": 1,
                        "maximum": 300,
                        "type": "integer",
                        "description": "Hard ceiling on outbound requests per minute. GitHub allows ~30 search calls/min authenticated, ~10/min unauthenticated. Lower this if you see 429 errors.",
                        "default": 30
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy settings. Datacenter proxies are sufficient — GitHub's API does not require residential IPs. Useful for splitting unauthenticated rate limits across multiple IPs."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
