# LinkedIn Profile Scraper & Email Finder 📧 ✅ No Login Required (`khadinakbar/linkedin-profile-email-scraper`) Actor

Find and extract LinkedIn profiles with emails — no login, no cookies needed. Input URLs, slugs, or public identifiers. Returns name, headline, experience, education, skills, email, and contact data. MCP/AI-agent optimized with consistent output schema.

- **URL**: https://apify.com/khadinakbar/linkedin-profile-email-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 17 total users, 12 monthly users, 86.2% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 profile scrapeds

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 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

## LinkedIn Profile Scraper with Emails — No Login Required

Extract full LinkedIn profile data at scale — names, headlines, work experience, education, skills, and verified emails — without any cookies or LinkedIn account. Built for sales teams, recruiters, marketers, and AI pipelines.

**Compatible with:** Apify MCP Server (Claude, ChatGPT), LangChain, Make.com, Zapier, n8n, and direct REST API access.

---

### ⚡ Quick start in 60 seconds

1. Click **Try for free**
2. Paste LinkedIn URLs **or** type a search query like `"CTO fintech startup London"`
3. Toggle **Include email enrichment** if you want emails
4. Click **Start** — results in minutes
5. Export as **JSON, CSV, or Excel** — or connect to your CRM

> **Pricing:** $0.005/profile · $0.01/profile with email · First $5 free (= 500 profiles)

---

### Why choose this scraper?

| Feature | This actor | dev_fusion | harvestapi |
|---|---|---|---|
| Scrape specific profile URLs | ✅ | ✅ | ✅ |
| Bare slug input (williamhgates) | ✅ | ❌ | ✅ |
| Natural language people search | ✅ **only one** | ❌ | ❌ |
| MCP / AI agent optimized | ✅ MCP_SERVERS | ❌ | ❌ |
| Separate pricing (no-email vs email) | ✅ $0.005/$0.01 | ❌ $0.01 flat | ✅ $0.004/$0.01 |
| Dataset schema for AI consumption | ✅ | ❌ | ❌ |

---

### What does the LinkedIn Profile Scraper do?

This actor extracts comprehensive professional data from LinkedIn public profiles and returns it as clean, structured JSON ready for CRM import and AI pipeline consumption. You can either provide a list of specific LinkedIn profile URLs or describe the type of person you're looking for using a natural language search query.

No cookies, no LinkedIn account, no session tokens — just paste in URLs or describe who you want to reach, and get structured lead data back in minutes.

Works seamlessly with AI agents like Claude and ChatGPT via the [Apify MCP Server](https://apify.com/apify/actors-mcp-server). Ask your AI "find me 100 CTOs at fintech startups in London with emails" and it will automatically run this actor.

---

### What LinkedIn data can you extract?

| Field | Type | Example |
|---|---|---|
| `full_name` | string | "Bill Gates" |
| `headline` | string | "Co-chair, Bill & Melinda Gates Foundation" |
| `location` | string | "Seattle, Washington, United States" |
| `summary` | string | "Driven by the belief that..." |
| `profile_url` | string | "https://linkedin.com/in/williamhgates/" |
| `profile_picture_url` | string | "https://media.licdn.com/..." |
| `connections_count` | integer | 500 |
| `current_company_name` | string | "Gates Foundation" |
| `experience` | array | [{title, company, duration, description}, ...] |
| `education` | array | [{school, degree, field, years}, ...] |
| `skills` | array | ["Leadership", "Strategy", ...] |
| `certifications` | array | [{name, issuer, date}, ...] |
| `languages` | array | ["English", "Spanish"] |
| `email` | string or null | "contact@example.com" *(optional, with includeEmail)* |
| `phone` | string or null | "+1-555-000-0000" *(optional, with includeEmail)* |

---

### How to scrape LinkedIn profiles

#### Option A — Bulk profile URL scraping

1. Click **"Try for free"** to open the actor
2. Paste a list of LinkedIn profile URLs into **"LinkedIn Profile URLs"**
3. Toggle **"Include email enrichment"** if you want email addresses
4. Set **"Maximum results"** to control how many profiles to scrape
5. Click **"Start"** — profiles arrive in your dataset within seconds
6. Download as **JSON, CSV, or Excel**

#### Option B — People search (no URLs needed)

1. Leave the URLs field empty
2. Enter a **search query** like `"VP Sales SaaS companies New York"` or `"Python engineers Berlin"`
3. The actor will run a LinkedIn people search and scrape all matching profiles automatically

#### Using with AI agents (Claude, ChatGPT, Cursor)

Connect via the [Apify MCP Server](https://apify.com/apify/actors-mcp-server) and prompt naturally:

> "Find me 50 software engineers in Berlin with Python skills — include their emails for outreach"

> "Scrape these LinkedIn profiles and give me their work history: [list of URLs]"

> "Get full profile data for all CTOs at Series A fintech startups in London"

The AI agent will automatically invoke this actor, pass the right parameters, and return structured results you can immediately use.

---

### How much does it cost?

This actor uses pay-per-event pricing — you pay only for what you get, with no monthly fees or minimums.

| What you get | Price |
|---|---|
| Profile data only (name, experience, education, skills) | **$0.005 per profile** |
| Profile data + email enrichment | **$0.01 per profile** |

**Example costs:**
- 100 profiles (no email): $0.50
- 100 profiles with email enrichment: $1.00
- 1,000 profiles for lead gen campaign: $5.00–$10.00
- Bulk LinkedIn talent search (500 profiles): $2.50–$5.00

Every new Apify account comes with **$5 free credit** — enough to scrape 500 profiles and test the actor at no cost.

---

### Use cases for the LinkedIn Profile Scraper

**B2B Lead Generation**
Build targeted prospect lists filtered by job title, industry, and location. Export email-enriched leads directly to HubSpot, Salesforce, or your outreach tool of choice.

**Talent Sourcing & Recruiting**
Search for candidates matching specific skills, education backgrounds, or experience levels. Bulk-extract profiles and import to your ATS in seconds.

**Account-Based Marketing (ABM)**
Identify decision-makers at target companies and enrich your existing contact lists with up-to-date job titles, company names, and professional summaries.

**Market Research & Competitive Intelligence**
Analyze hiring patterns, skill distributions, and professional backgrounds across industries or competitor organizations.

**AI Pipeline Integration**
Feed structured LinkedIn data into ChatGPT, Claude, or RAG systems via the Apify MCP Server for automated analysis, scoring, and outreach personalization.

**Sales Prospecting**
Generate warm leads for cold email or LinkedIn outreach campaigns — with full professional context for hyper-personalized messaging.

---

### API & integration examples

#### REST API

```bash
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~linkedin-profile-email-scraper/runs" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "profileUrls": [
      "https://www.linkedin.com/in/williamhgates",
      "https://www.linkedin.com/in/jeffweiner08"
    ],
    "maxResults": 50,
    "includeEmail": true
  }'
````

#### JavaScript / Node.js

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

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

const run = await client.actor('khadinakbar/linkedin-profile-email-scraper').call({
    profileUrls: ['https://www.linkedin.com/in/williamhgates'],
    maxResults: 50,
    includeEmail: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
// [{ full_name: 'Bill Gates', headline: '...', email: '...', experience: [...] }]
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_API_TOKEN')

run = client.actor('khadinakbar/linkedin-profile-email-scraper').call(
    run_input={
        'searchQuery': 'CTO fintech startup London',
        'maxResults': 100,
        'includeEmail': True,
    }
)

items = list(client.dataset(run['defaultDatasetId']).iterate_items())
for profile in items:
    print(f"{profile['full_name']} — {profile['headline']} — {profile.get('email')}")
```

**Ready-made integrations:** Apify MCP Server, LangChain, Make.com, Zapier, n8n, Google Sheets, HubSpot, Salesforce

***

### FAQ

**Q: Is login or cookies required?**
A: No. This actor extracts data from LinkedIn's publicly accessible profile pages using residential proxies. No LinkedIn account, cookies, or API keys are needed.

**Q: Is this legal?**
A: Yes. The actor only accesses publicly available data that any person could view in a browser without logging in. See [Apify's guide on web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

**Q: How accurate is the email enrichment?**
A: The actor extracts emails that are publicly visible on the profile page itself. Email visibility depends on the profile owner's privacy settings. Not all profiles will have a discoverable email.

**Q: How many profiles can I scrape per run?**
A: Up to 1,000 per run. For larger volumes, simply run the actor multiple times or use Apify's scheduler for recurring runs.

**Q: How fast is it?**
A: Approximately 20–40 profiles per minute depending on residential proxy response times and LinkedIn's rate limits. A run of 100 profiles typically completes in 3–5 minutes.

**Q: Can I use this with Claude or ChatGPT?**
A: Yes. Connect via the [Apify MCP Server](https://apify.com/apify/actors-mcp-server) and ask for LinkedIn data in plain English. The AI will automatically run this actor and return results.

**Q: Can I schedule recurring scrapes?**
A: Yes. Use Apify's built-in scheduler to run daily, weekly, or on any custom cron schedule. Results are available via webhook, email notification, or connected integrations.

**Q: What if a profile can't be scraped?**
A: The actor retries failed requests up to 3 times with rotating residential proxies. Permanently failed profiles are logged but don't affect your output — only successful extractions are charged.

***

### Technical details

- **Crawler:** HttpCrawler (Crawlee) with residential proxy rotation
- **Language:** TypeScript (Node.js 20)
- **Proxy:** Residential (required for LinkedIn anti-bot bypass)
- **Session rotation:** Enabled (maxUsageCount: 5 per session)
- **Concurrency:** 3 parallel requests (tuned for LinkedIn rate limits)
- **Retries:** 3 per URL with new proxy/session on each retry
- **Pricing model:** PAY\_PER\_EVENT — charged per successfully scraped profile
- **MCP compatible:** Full dataset schema with field-level metadata for AI agent consumption

# Actor input Schema

## `profileUrls` (type: `array`):

Paste LinkedIn profile URLs to scrape specific people. Accepts full URLs (https://linkedin.com/in/williamhgates), short slugs (/in/williamhgates), or bare usernames (williamhgates). Leave empty and use 'Search query' instead if you want to search by job title or industry.

\[AI agents] Use this field when given explicit profile URLs or usernames. Do NOT use when the user describes a niche — use searchQuery instead.

## `publicIdentifiers` (type: `array`):

Alternatively, paste just the username/slug part from the LinkedIn URL — e.g. 'williamhgates' instead of the full URL. Each entry is automatically converted to a full profile URL. This is the easiest way to paste a list from a spreadsheet.

\[AI agents] Accepts bare usernames or slug strings. Merged with profileUrls before scraping.

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

Describe the type of people you want — LinkedIn will search for matching profiles. Examples: 'CTO fintech startup London', 'Python engineers Berlin', 'VP Sales SaaS New York'. Leave empty if you're providing specific URLs above.

\[AI agents] Use this field when the user describes a job title, industry, or niche instead of providing specific URLs. Do NOT use when given explicit URLs — use profileUrls for that.

## `includeEmail` (type: `boolean`):

Also extract the email address when it's publicly visible on the profile. Costs $0.01/profile total instead of $0.005. Best for outreach campaigns and CRM import.

\[AI agents] Enable when the user asks for emails, contact info, or lead enrichment.

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

Maximum number of profiles to scrape. Lower = faster and cheaper for testing. Higher = full bulk export. Max 1,000 per run.

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

Proxy settings. Residential proxies are strongly recommended for LinkedIn — datacenter IPs are often blocked. Leave as default unless you have a specific setup.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates",
    "https://www.linkedin.com/in/jeffweiner08"
  ],
  "publicIdentifiers": [
    "williamhgates",
    "jeffweiner08"
  ],
  "searchQuery": "CTO fintech startup London",
  "includeEmail": false,
  "maxResults": 50
}
```

# Actor output Schema

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

Dataset of LinkedIn profiles with semantic field names for AI agent consumption and CRM import.

# 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 = {
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates",
        "https://www.linkedin.com/in/jeffweiner08"
    ],
    "publicIdentifiers": [
        "williamhgates",
        "jeffweiner08"
    ],
    "searchQuery": "CTO fintech startup London"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/linkedin-profile-email-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 = {
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates",
        "https://www.linkedin.com/in/jeffweiner08",
    ],
    "publicIdentifiers": [
        "williamhgates",
        "jeffweiner08",
    ],
    "searchQuery": "CTO fintech startup London",
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/linkedin-profile-email-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 '{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates",
    "https://www.linkedin.com/in/jeffweiner08"
  ],
  "publicIdentifiers": [
    "williamhgates",
    "jeffweiner08"
  ],
  "searchQuery": "CTO fintech startup London"
}' |
apify call khadinakbar/linkedin-profile-email-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Profile Scraper & Email Finder 📧 ✅ No Login Required",
        "description": "Find and extract LinkedIn profiles with emails — no login, no cookies needed. Input URLs, slugs, or public identifiers. Returns name, headline, experience, education, skills, email, and contact data. MCP/AI-agent optimized with consistent output schema.",
        "version": "1.0",
        "x-build-id": "hxLkU6kaQlvGBOR0w"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~linkedin-profile-email-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-linkedin-profile-email-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/khadinakbar~linkedin-profile-email-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-linkedin-profile-email-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/khadinakbar~linkedin-profile-email-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-linkedin-profile-email-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": {
                    "profileUrls": {
                        "title": "🔗 LinkedIn Profile URLs",
                        "type": "array",
                        "description": "Paste LinkedIn profile URLs to scrape specific people. Accepts full URLs (https://linkedin.com/in/williamhgates), short slugs (/in/williamhgates), or bare usernames (williamhgates). Leave empty and use 'Search query' instead if you want to search by job title or industry.\n\n[AI agents] Use this field when given explicit profile URLs or usernames. Do NOT use when the user describes a niche — use searchQuery instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "publicIdentifiers": {
                        "title": "🪪 LinkedIn Slugs / Public Identifiers",
                        "type": "array",
                        "description": "Alternatively, paste just the username/slug part from the LinkedIn URL — e.g. 'williamhgates' instead of the full URL. Each entry is automatically converted to a full profile URL. This is the easiest way to paste a list from a spreadsheet.\n\n[AI agents] Accepts bare usernames or slug strings. Merged with profileUrls before scraping.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQuery": {
                        "title": "🔍 Search query (people search)",
                        "type": "string",
                        "description": "Describe the type of people you want — LinkedIn will search for matching profiles. Examples: 'CTO fintech startup London', 'Python engineers Berlin', 'VP Sales SaaS New York'. Leave empty if you're providing specific URLs above.\n\n[AI agents] Use this field when the user describes a job title, industry, or niche instead of providing specific URLs. Do NOT use when given explicit URLs — use profileUrls for that."
                    },
                    "includeEmail": {
                        "title": "📧 Include email enrichment (+$0.005/profile)",
                        "type": "boolean",
                        "description": "Also extract the email address when it's publicly visible on the profile. Costs $0.01/profile total instead of $0.005. Best for outreach campaigns and CRM import.\n\n[AI agents] Enable when the user asks for emails, contact info, or lead enrichment.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "📊 Maximum results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of profiles to scrape. Lower = faster and cheaper for testing. Higher = full bulk export. Max 1,000 per run.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies are strongly recommended for LinkedIn — datacenter IPs are often blocked. Leave as default unless you have a specific setup."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
