# Linkedin Scraper (`scraperoka/linkedin-scraper`) Actor

🔎 LinkedIn Scraper extracts accurate company profiles, employee data, and key details from LinkedIn pages—including websites, industry, size, HQ & descriptions. 🚀 Perfect for B2B lead gen, sales outreach & recruitment analytics. 📈

- **URL**: https://apify.com/scraperoka/linkedin-scraper.md
- **Developed by:** [Scraperoka](https://apify.com/scraperoka) (community)
- **Categories:** Lead generation, Jobs, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 results

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

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are 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 🔍

**LinkedIn Profile Scraper** helps you scrape structured details from **public LinkedIn profiles and company pages**—perfect for teams doing outreach, research, or lead generation at scale. If you’re looking for a **LinkedIn profile scraper**, **LinkedIn data scraper**, or a **LinkedIn contact scraper** to support your workflows, this actor streamlines discovery and extraction so you can save hours of manual work.

Whether you’re a marketer, recruiter, data analyst, or researcher, this **LinkedIn lead generation scraper** turns a list of profile or company URLs into usable JSON records you can export and process right away.

---

### Why choose LinkedIn Profile Scraper?

| Feature | Benefit |
| --- | --- |
| ✅ **Profile + company page coverage** | Extracts data for both Person profiles and Organization/Corporation company pages |
| ✅ **Public data extraction** | Focuses on publicly available profile and company page content |
| ✅ **Reliability with fallback proxy support** | Uses built-in proxy support for more consistent scraping outcomes |
| ✅ **Structured JSON output** | Produces consistent fields like `full_name`, `headline`, `skills`, `follower_count`, and more |
| ✅ **Scales to URL lists** | Processes each URL from your `startUrls` input and pushes results incrementally |
| ✅ **Apify dataset-ready results** | Each scraped record is pushed immediately for easy export (JSON/CSV via Apify) |

---

### Key features

- 🔍 **LinkedIn profile extraction tool for Person pages**: Pulls `full_name`, `headline`, `summary`, location (`city`, `country`), follower stats, and more  
- 🏢 **LinkedIn company page scraper for Organizations**: Extracts company fields like `name`, `tagline`, `description`, `hq`, `website`, and `specialities`  
- 🛡️ **Built-in proxy support for reliable scraping**: Helps improve consistency when pages are harder to fetch  
- 🔄 **Resilience for real-world URLs**: Includes authwall/login detection so you can spot partial or missing results early  
- 📊 **Comprehensive profile data completeness**: Captures `skills`, `certifications`, `experiences`, `education`, `languages`, and company context where available  
- 💾 **Real-time saving to the dataset**: Each result is pushed as soon as it’s extracted (`Actor.push_data` with `charged_event_name="result"`)  
- 🌐 **URL support via `startUrls`**: Accepts a list of LinkedIn profile or company URLs in one run  

---

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "startUrls": [
    "https://www.linkedin.com/in/williamhgates",
    "https://www.linkedin.com/company/microsoft"
  ]
}
````

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `startUrls` | Yes | A list of LinkedIn profile or company URLs to scrape. Each item can be either a string URL or an object containing `url` and (optionally) `id`. |

> Note: In the actor code, when `startUrls` entries are objects, it reads `entry.get("url")` and `entry.get("id")`. If `id` is not provided, the actor uses the incremental index (starting from 1) as the output `id`.

***

### Output

The actor saves each profile or company’s data in JSON format to the Apify dataset via `Actor.push_data`.

Example output (Person profile):

```json
{
  "full_name": "N/A",
  "first_name": "",
  "last_name": "",
  "headline": "N/A",
  "summary": "N/A",
  "country": "N/A",
  "city": "N/A",
  "profile_pic_url": "N/A",
  "follower_count": null,
  "public_identifier": "N/A",
  "open_to_work": false,
  "show_verification_badge": false,
  "skills": [],
  "certifications": [],
  "experiences": [],
  "education": [],
  "background_cover_image_url": "N/A",
  "languages": [],
  "personal_emails": [],
  "personal_numbers": [],
  "company_name": "N/A",
  "company_industry": "N/A",
  "company_website": "N/A",
  "company_linkedin": "N/A",
  "company_size": "N/A",
  "url": "https://www.linkedin.com/in/example",
  "id": "1"
}
```

Example output (Company page):

```json
{
  "url": "https://www.linkedin.com/company/example",
  "profile_pic_url": "N/A",
  "background_cover_image_url": "N/A",
  "id": "1",
  "name": "N/A",
  "hq": {
    "city": "N/A",
    "country": "N/A",
    "is_hq": true,
    "line_1": "N/A",
    "postal_code": "N/A",
    "state": "N/A"
  },
  "follower_count": null,
  "website": "N/A",
  "company_size": [0, 0],
  "tagline": "N/A",
  "description": "N/A",
  "founded_year": null,
  "linkedin_internal_id": "N/A",
  "specialities": []
}
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | The final ID used for output (uses `startUrls` item `id` if provided; otherwise the incremental index starting from 1). |
| `url` | string | The LinkedIn URL that was scraped. |
| `full_name` | string | Person’s full name (from JSON-LD or page header). Present for Person outputs. |
| `first_name` | string | Person’s first name derived from `full_name`. Present for Person outputs. |
| `last_name` | string | Person’s last name derived from `full_name`. Present for Person outputs. |
| `headline` | string | Person’s headline (Top Card / headline) or company tagline context. |
| `summary` | string | Person’s “About” text or company description. |
| `country` | string | Person’s country (normalized to `United States of America` when applicable). Present for Person outputs. |
| `city` | string | Person’s city (cleaned). Present for Person outputs. |
| `profile_pic_url` | string | Profile or company image URL (`profile_pic_url`). |
| `background_cover_image_url` | string | Background/cover image URL. |
| `follower_count` | number | null | Person followers or company followers count when detected. |
| `public_identifier` | string | Public identifier extracted from the input Person URL. Present for Person outputs. |
| `open_to_work` | boolean | Always set to `false` in the current Person output structure. |
| `show_verification_badge` | boolean | Always set to `false` in the current Person output structure. |
| `skills` | array | Extracted skills (Person outputs). |
| `certifications` | array | Extracted certifications (Person outputs). |
| `experiences` | array | Extracted experience entries (Person outputs), each with `title`, `company`, `company_linkedin_profile_url`, `starts_at`. |
| `education` | array | Extracted education entries (Person outputs), each with `school`, `school_linkedin_profile_url`, `starts_at`, `ends_at`. |
| `background_cover_image_url` | string | Background/cover image URL (Person and company outputs). |
| `languages` | array | Extracted languages (Person outputs). |
| `personal_emails` | array | An empty array in the current Person output structure. |
| `personal_numbers` | array | An empty array in the current Person output structure. |
| `company_name` | string | Company name from the person’s first experience item (Person outputs). |
| `company_industry` | string | Detected industry (Person outputs). |
| `company_website` | string | Detected company website URL (Person outputs). |
| `company_linkedin` | string | Company LinkedIn URL (Person outputs). |
| `company_size` | string | Company size (Person outputs). |
| `hq` | object | Company HQ object with `city`, `country`, `is_hq`, `line_1`, `postal_code`, `state` (Company outputs). |
| `website` | string | Company website extracted from JSON-LD. (Company outputs) |
| `tagline` | string | Company tagline text from the page header (Company outputs). |
| `company_size` | array | Company size range in the form `[min, max]` derived from the page (Company outputs). |
| `founded_year` | integer | null | Founded year extracted from the “Founded” section (Company outputs). |
| `linkedin_internal_id` | string | Internal organization identifier extracted from HTML when available (Company outputs). |
| `specialities` | array | Company specialties split into a list (Company outputs). |

Closing note: once the run finishes, you can export the dataset from Apify to JSON/CSV depending on your workflow.

***

### How to use LinkedIn Profile Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at [console.apify.com](https://console.apify.com) and open the Actors page.

2. **Find the actor**\
   Search for **LinkedIn Profile Scraper** and open the actor details page.

3. **Go to the INPUT section**\
   Use the built-in form, and paste your `startUrls` as either:
   a list of LinkedIn profile URLs and/or company URLs, or a list of objects containing `url` and `id`.

4. **(Optional) Plan for proxy support**\
   This actor can use Apify proxy support when proxy configuration is provided in the input (the actor code looks for `proxyConfiguration` and a `proxy support` flag).

5. **Click Run**\
   Start the run. You’ll see logs indicating how many URLs are being processed and which URL is currently being scraped.

6. **Monitor logs for authwall/login signals**\
   If the actor detects an authwall or “Sign In”, it logs a warning and results may be partial or missing.

7. **Open the OUTPUT dataset**\
   After completion, go to the dataset output to view records. Each extracted profile/company is pushed incrementally as a JSON item.

8. **Export your data**\
   Export from Apify to JSON/CSV for analytics, CRM imports, or further enrichment in your pipeline.

No coding required—get accurate LinkedIn profile extraction results in minutes. 🚀

***

### Advanced features & SEO optimization

- 🔄 **Designed for LinkedIn profile scraper workflows**: The actor supports both **LinkedIn profile extraction tool** use cases (Person) and **LinkedIn company page scraper** use cases (Organization), so your pipeline doesn’t need separate tools.
- 🛡️ **Resilience-focused scraping**: Includes proxy support and page-state detection (authwall/login) to help you understand when results might be incomplete.
- 📊 **Keyword-friendly structured output**: The exported JSON includes core fields commonly used in **LinkedIn email scraper** and prospecting workflows (even when email lists are empty in the current output structure).
- 💾 **Ready for automation**: Each result is pushed to the dataset as it’s scraped, making it easy to plug into downstream systems.

***

### Best use cases

- 🎯 **Sales prospecting scraper tool**: Generate a structured table of prospects (names, headlines, location, skills, experience context) to accelerate outreach lists.
- 🧑‍💼 **Recruiting and talent research**: Quickly compile profile-level metadata (summary, background, education, languages) from public LinkedIn profiles.
- 🏢 **B2B lead generation**: Extract company attributes like `name`, `tagline`, `description`, `hq`, and `specialities` for firmographic analysis.
- 📈 **Market research & segmentation**: Build datasets for analysts by combining company page data with person profile context.
- 🗂️ **Data enrichment pipelines**: Feed results into CRM or analytics workflows where you need consistent JSON keys per record.
- 💻 **Automation and scraping API workflows**: Use the Apify dataset as an interface between your scraping step and your ETL step.

***

### Technical specifications

- **Supported Input Formats**
  ✅ `startUrls` as an array of LinkedIn profile or company URLs\
  ✅ Each `startUrls` entry can be a string URL or an object with `url` and optional `id`

- **Proxy Support**
  ✅ Built-in proxy support is used when proxy configuration is provided in input (`proxyConfiguration` and a `proxy support` flag)

- **Retry Mechanism**
  ❌ Not explicitly defined as a user-configurable retry count in the provided input schema or README content\
  ✅ Includes resilience-oriented behavior such as authwall/login detection and per-URL error handling

- **Dataset Structure**
  ✅ JSON records pushed via `Actor.push_data` with `charged_event_name="result"`\
  ✅ Person and company outputs have different field sets based on page type

- **Rate Limits & Performance**
  ✅ Includes a small delay between URLs (`time.sleep(1)`)\
  ✅ Fetching is done per URL listed in `startUrls`

- **Limitations**
  ❌ Private/restricted content may result in missing or partial data (authwall/login detection logs a warning)\
  ❌ Some output arrays/fields (e.g. `personal_emails`, `personal_numbers`) are empty in the current output structure

***

### FAQ

#### Do I need an API key to run LinkedIn Profile Scraper on Apify?

No. You run it through Apify Console by providing `startUrls` in the input. Apify handles execution and you receive results in the dataset.

#### What kinds of LinkedIn URLs can I submit in `startUrls`?

You can submit LinkedIn profile URLs (Person pages) and LinkedIn company URLs (Organization/Corporation pages). The actor detects whether a page is a person or company and returns the appropriate JSON structure.

#### Does this LinkedIn profile scraper return emails?

In the current output structure, `personal_emails` is an empty array and `personal_numbers` is an empty array. The actor focuses on structured public profile and company metadata fields.

#### Will the actor work if a page shows an authwall or login prompt?

It detects authwalls or “Sign In” pages and logs a warning that results might be partial or missing. You can use these logs to understand gaps in the extracted data.

#### Can I control the output `id` for each URL?

Yes. If you pass an object inside `startUrls` with an `id`, the actor uses it. If you pass only a string URL, the actor uses an incremental index (starting from 1).

#### How do I export results after the run?

After completion, open the Apify dataset for the run and export to your desired format (for example, JSON/CSV via Apify).

#### Is this tool legal and compliant for my use case?

✅ The tool accesses **publicly available sources**, but compliance with GDPR/CCPA, spam regulations, and platform terms is still your responsibility. Review policies and use the results responsibly.

***

### Support & feature requests

If you’re using **LinkedIn Profile Scraper** and want improvements, we’d love to hear from you. 💬

- 💡 **Feature Requests**: For example, enhanced output customization, additional fields, or better handling for edge-case page formats—share what you need for your LinkedIn data scraper or lead generation pipeline.
- 📧 **Contact**: Email us at <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for this LinkedIn profile scraping software.

***

### Closing CTA / Final thoughts

*Ready to scrape LinkedIn profiles and company pages with speed and consistent JSON output?* **LinkedIn Profile Scraper** is a practical, SEO-optimized way to turn URL lists into usable structured data at scale. 🚀

***

### Disclaimer

**This tool only accesses publicly accessible sources.** It does not access private profiles, authenticated data, or password-protected pages.

Using this actor for lead generation, research, or outreach is subject to applicable laws and platform policies (including GDPR, CCPA, spam regulations, and LinkedIn terms). It is your responsibility to ensure your use is compliant.

If you need data removal assistance, contact <dataforleads@gmail.com>.

Use **LinkedIn Profile Scraper** responsibly, ethically, and for legitimate purposes only.

# Actor input Schema

## `startUrls` (type: `array`):

List of LinkedIn profile or company URLs to scrape.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.linkedin.com/in/williamhgates"
    }
  ]
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.linkedin.com/in/williamhgates"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperoka/linkedin-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 = { "startUrls": [{ "url": "https://www.linkedin.com/in/williamhgates" }] }

# Run the Actor and wait for it to finish
run = client.actor("scraperoka/linkedin-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 '{
  "startUrls": [
    {
      "url": "https://www.linkedin.com/in/williamhgates"
    }
  ]
}' |
apify call scraperoka/linkedin-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Linkedin Scraper",
        "description": "🔎 LinkedIn Scraper extracts accurate company profiles, employee data, and key details from LinkedIn pages—including websites, industry, size, HQ & descriptions. 🚀 Perfect for B2B lead gen, sales outreach & recruitment analytics. 📈",
        "version": "1.0",
        "x-build-id": "yDKpHDd7ZvPq784za"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperoka~linkedin-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperoka-linkedin-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/scraperoka~linkedin-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraperoka-linkedin-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/scraperoka~linkedin-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraperoka-linkedin-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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of LinkedIn profile or company URLs to scrape.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
