# PubMed Search Scraper (`automation-lab/pubmed-search-scraper`) Actor

Search PubMed via the official NCBI API and extract article metadata, abstracts, DOI, authors, journals, MeSH terms, and keywords.

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

## Pricing

from $0.01 / 1,000 pubmed article extracteds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## PubMed Search Scraper

Extract PubMed article metadata, abstracts, DOI, authors, journals, MeSH terms, keywords, and publication dates from the official NCBI E-utilities API.

Use this actor when you need a repeatable PubMed literature-monitoring pipeline for biomedical research, pharma intelligence, systematic reviews, clinical-trial landscaping, academic discovery, or RAG dataset preparation.

### What does PubMed Search Scraper do?

PubMed Search Scraper turns one or more PubMed search queries into a clean Apify dataset.

It uses NCBI ESearch, ESummary, and EFetch XML endpoints.

It does not scrape PubMed HTML pages.

It does not require login cookies.

It does not require browser automation.

It can run with no NCBI API key for normal public access.

Add an optional NCBI API key only when you need higher throughput.

### Who is it for?

- 🧬 Medical researchers tracking new papers for a topic.
- 💊 Pharma and biotech analysts monitoring drug, disease, biomarker, and target literature.
- 🏥 Clinical evidence teams building review queues.
- 🎓 Academic labs collecting citation metadata for literature reviews.
- 🤖 AI and RAG teams preparing biomedical document indexes.
- 📈 Competitive-intelligence teams watching publications by disease area, journal, or author keyword.
- 🧾 Systematic-review teams exporting article metadata before screening.

### Why use this actor?

PubMed search results are easy to inspect manually but hard to operationalize at scale.

This actor gives you structured rows with stable identifiers and metadata that are ready for export.

You can schedule it daily or weekly to monitor new papers.

You can send the dataset to Google Sheets, S3, Make, Zapier, or your own database.

You can use PubMed query syntax directly, including field tags such as `[Title]` or `[MeSH Terms]`.

### Data you can extract

| Field | Description |
|---|---|
| `pmid` | PubMed identifier |
| `title` | Article title |
| `abstract` | Abstract text when available |
| `journal` | Journal name |
| `journalIssn` | ISSN from PubMed XML when available |
| `publicationDate` | Publication date |
| `epubDate` | Electronic publication date from ESummary |
| `authors` | Structured author objects with affiliations when available |
| `authorNames` | Flat author-name list |
| `doi` | Digital Object Identifier |
| `articleTypes` | Publication types such as Review or Clinical Trial |
| `meshTerms` | MeSH descriptor terms |
| `keywords` | Author keywords |
| `language` | PubMed language code |
| `url` | PubMed article URL |
| `query` | Input query that produced the article |
| `rank` | Result rank within the query |
| `totalResultsForQuery` | Total PubMed matches reported by ESearch |

### How much does it cost to scrape PubMed search results?

This actor uses pay-per-event pricing.

You pay a small start fee plus a per-result fee for each PubMed article saved to the dataset.

The default input is intentionally small so your first run is cheap.

Large literature reviews should increase `maxResultsPerQuery` after you confirm the query is correct.

The actor uses the public NCBI API and no proxies, so platform costs are kept low.

### How to use PubMed Search Scraper

1. Open `automation-lab/pubmed-search-scraper` on Apify.
2. Enter one or more PubMed queries.
3. Choose how many articles to save per query.
4. Optionally set a date range.
5. Optionally restrict by article type or journal.
6. Decide whether to include abstracts, MeSH terms, and keywords.
7. Run the actor.
8. Export the dataset as JSON, CSV, Excel, XML, RSS, or through the Apify API.

### Input example

```json
{
  "queries": [
    "cancer immunotherapy",
    "machine learning radiology"
  ],
  "maxResultsPerQuery": 100,
  "sort": "pub_date",
  "minDate": "2024/01/01",
  "articleTypes": ["Review"],
  "includeAbstract": true,
  "includeMeshTerms": true,
  "requestsPerSecond": 3
}
````

### Output example

```json
{
  "pmid": "42345602",
  "title": "Early neutrophil infiltration promotes TRIMELVax-induced antitumor immunity...",
  "abstract": "Enhancing innate-adaptive immune crosstalk is key...",
  "journal": "Oncoimmunology",
  "publicationDate": "2026-Dec-31",
  "authors": [{ "name": "Amarilis Pérez-Baños" }],
  "doi": "10.1080/2162402X.2026.2680766",
  "articleTypes": ["Journal Article"],
  "meshTerms": ["Animals", "Neutrophils"],
  "keywords": ["Immunotherapy", "cancer vaccine"],
  "url": "https://pubmed.ncbi.nlm.nih.gov/42345602/",
  "query": "cancer immunotherapy",
  "rank": 1,
  "source": "PubMed"
}
```

### PubMed query tips

Use normal PubMed query syntax.

Examples:

- `cancer immunotherapy`
- `CRISPR[Title]`
- `"machine learning"[MeSH Terms]`
- `diabetes AND metformin`
- `Nature Medicine[Journal] AND oncology`
- `COVID-19 vaccine AND randomized controlled trial`

Keep your first run small.

Check the output.

Then increase `maxResultsPerQuery` for production use.

### Date and article-type filtering

Use `minDate` and `maxDate` to monitor new papers.

Use `dateType` to decide which PubMed date field is filtered.

Use `articleTypes` for publication types such as:

- Review
- Clinical Trial
- Randomized Controlled Trial
- Meta-Analysis
- Systematic Review
- Case Reports

Use `journals` to restrict results to specific journals.

### Integrations

This actor works well in automated research workflows.

- 🔁 Schedule daily searches for new biomedical papers.
- 🧾 Export CSV for review-screening tools.
- 📊 Send article metadata to Google Sheets.
- 🧠 Feed abstracts and MeSH terms into RAG pipelines.
- 🗄️ Store PMIDs and DOI values in a data warehouse.
- 🔔 Trigger alerts when new papers match high-value disease or drug queries.

### API usage with Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/pubmed-search-scraper').call({
  queries: ['cancer immunotherapy'],
  maxResultsPerQuery: 50,
  sort: 'pub_date',
  includeAbstract: true
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/pubmed-search-scraper').call(run_input={
    'queries': ['machine learning radiology'],
    'maxResultsPerQuery': 50,
    'sort': 'pub_date',
    'includeAbstract': True,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~pubmed-search-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"queries":["CRISPR[Title]"],"maxResultsPerQuery":25,"includeAbstract":true}'
```

### MCP: use PubMed Search Scraper from Claude

You can call this actor through Apify MCP from Claude Code or Claude Desktop.

MCP server URL:

```text
https://mcp.apify.com/?tools=automation-lab/pubmed-search-scraper
```

Claude Code setup:

```bash
claude mcp add apify-pubmed-search https://mcp.apify.com/?tools=automation-lab/pubmed-search-scraper
```

Claude Desktop JSON config:

```json
{
  "mcpServers": {
    "apify-pubmed-search": {
      "url": "https://mcp.apify.com/?tools=automation-lab/pubmed-search-scraper"
    }
  }
}
```

Example prompts:

- "Search PubMed for 50 recent review articles about CAR-T adverse events and summarize the journal distribution."
- "Run the PubMed scraper for machine learning radiology since 2024 and return DOI, title, journal, and abstracts."
- "Find recent PubMed papers about GLP-1 cardiovascular outcomes and prepare a screening table."

### NCBI API key and rate limits

NCBI E-utilities works without an API key for normal public use.

Without an API key, the actor caps requests at a conservative 3 requests per second.

With an API key, you can set a higher `requestsPerSecond` value up to 10.

Batches are used for summaries and detail XML to reduce request count.

### FAQ

#### Does this PubMed scraper require an API key?

No. It works with the public NCBI E-utilities API. Add an optional API key only if you need higher request throughput.

#### Does it download full-text articles?

No. It extracts PubMed citation metadata and abstracts available through PubMed XML. It does not bypass publisher paywalls.

### Troubleshooting

#### Why did I get zero results?

Your query may be too narrow, the date range may exclude all records, or a publication type/journal filter may not match PubMed indexing.

Try the query in PubMed directly, remove filters, and rerun with a small limit.

#### Why is an abstract missing?

Not every PubMed record has an abstract in the XML response.

If PubMed does not provide an abstract, the `abstract` field is omitted or empty.

#### Why are some MeSH terms missing?

Fresh records may not have MeSH indexing yet.

PubMed indexing can lag behind publication.

### Legality and responsible use

This actor uses NCBI's public E-utilities API.

It does not bypass login, paywalls, or private systems.

Respect NCBI usage guidelines and keep request rates reasonable.

If you run large scheduled workflows, provide an NCBI API key and contact email.

### Related scrapers

Explore related Automation Lab actors:

- https://apify.com/automation-lab/arxiv-search-scraper
- https://apify.com/automation-lab/article-content-extractor
- https://apify.com/automation-lab/google-scholar-scraper
- https://apify.com/automation-lab/website-content-crawler

### Best practices

Start with one query.

Use `maxResultsPerQuery` around 25 for validation.

Export the dataset and inspect fields.

Then increase volume or add more queries.

Use PubMed field tags when you need precision.

Use scheduled runs for monitoring new publications.

Store PMIDs so downstream systems can deduplicate records.

### Support

If a run fails, include the run ID, input JSON, and a short description of what you expected.

For query-quality questions, include the exact PubMed query and the date filters you used.

# Actor input Schema

## `queries` (type: `array`):

One or more PubMed search queries. Use normal PubMed syntax such as cancer immunotherapy, CRISPR\[Title], or "machine learning"\[MeSH Terms].

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

Maximum number of PubMed records to save for each query.

## `sort` (type: `string`):

PubMed result order to request from ESearch.

## `minDate` (type: `string`):

Optional lower date bound accepted by NCBI, e.g. 2024/01/01 or 2024.

## `maxDate` (type: `string`):

Optional upper date bound accepted by NCBI, e.g. 2026/12/31. Leave empty for current results.

## `dateType` (type: `string`):

Which PubMed date field should be filtered when minDate or maxDate is provided.

## `articleTypes` (type: `array`):

Optional PubMed publication type filters, for example Review, Clinical Trial, Meta-Analysis, or Randomized Controlled Trial.

## `journals` (type: `array`):

Optional journal names to restrict the search, for example Nature Medicine or The Lancet.

## `includeAbstract` (type: `boolean`):

Fetch full PubMed XML records and include article abstracts when available.

## `includeMeshTerms` (type: `boolean`):

Extract MeSH descriptor terms and author keywords from PubMed XML records when available.

## `apiKey` (type: `string`):

Optional NCBI API key for higher throughput. Leave empty for normal public E-utilities access.

## `email` (type: `string`):

Optional email sent to NCBI E-utilities as recommended by NCBI for API consumers.

## `requestsPerSecond` (type: `integer`):

Conservative NCBI request rate. Without an API key the actor caps this at 3 requests/second.

## `batchSize` (type: `integer`):

How many PMIDs to send to ESummary/EFetch in each API request.

## Actor input object example

```json
{
  "queries": [
    "cancer immunotherapy",
    "machine learning radiology"
  ],
  "maxResultsPerQuery": 20,
  "sort": "pub_date",
  "minDate": "2024/01/01",
  "dateType": "pdat",
  "articleTypes": [
    "Review"
  ],
  "includeAbstract": true,
  "includeMeshTerms": true,
  "requestsPerSecond": 3,
  "batchSize": 20
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "cancer immunotherapy",
        "machine learning radiology"
    ],
    "maxResultsPerQuery": 20,
    "sort": "pub_date",
    "minDate": "2024/01/01",
    "dateType": "pdat",
    "articleTypes": [
        "Review"
    ],
    "includeAbstract": true,
    "includeMeshTerms": true,
    "requestsPerSecond": 3,
    "batchSize": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/pubmed-search-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 = {
    "queries": [
        "cancer immunotherapy",
        "machine learning radiology",
    ],
    "maxResultsPerQuery": 20,
    "sort": "pub_date",
    "minDate": "2024/01/01",
    "dateType": "pdat",
    "articleTypes": ["Review"],
    "includeAbstract": True,
    "includeMeshTerms": True,
    "requestsPerSecond": 3,
    "batchSize": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/pubmed-search-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 '{
  "queries": [
    "cancer immunotherapy",
    "machine learning radiology"
  ],
  "maxResultsPerQuery": 20,
  "sort": "pub_date",
  "minDate": "2024/01/01",
  "dateType": "pdat",
  "articleTypes": [
    "Review"
  ],
  "includeAbstract": true,
  "includeMeshTerms": true,
  "requestsPerSecond": 3,
  "batchSize": 20
}' |
apify call automation-lab/pubmed-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "PubMed Search Scraper",
        "description": "Search PubMed via the official NCBI API and extract article metadata, abstracts, DOI, authors, journals, MeSH terms, and keywords.",
        "version": "0.1",
        "x-build-id": "SUe1NZc90KHixMh8K"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~pubmed-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-pubmed-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automation-lab~pubmed-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-pubmed-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automation-lab~pubmed-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-pubmed-search-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": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "One or more PubMed search queries. Use normal PubMed syntax such as cancer immunotherapy, CRISPR[Title], or \"machine learning\"[MeSH Terms].",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerQuery": {
                        "title": "Maximum articles per query",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of PubMed records to save for each query.",
                        "default": 100
                    },
                    "sort": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "pub_date",
                            "author",
                            "journal"
                        ],
                        "type": "string",
                        "description": "PubMed result order to request from ESearch.",
                        "default": "relevance"
                    },
                    "minDate": {
                        "title": "Minimum date",
                        "type": "string",
                        "description": "Optional lower date bound accepted by NCBI, e.g. 2024/01/01 or 2024."
                    },
                    "maxDate": {
                        "title": "Maximum date",
                        "type": "string",
                        "description": "Optional upper date bound accepted by NCBI, e.g. 2026/12/31. Leave empty for current results."
                    },
                    "dateType": {
                        "title": "Date field",
                        "enum": [
                            "pdat",
                            "edat",
                            "mdat"
                        ],
                        "type": "string",
                        "description": "Which PubMed date field should be filtered when minDate or maxDate is provided.",
                        "default": "pdat"
                    },
                    "articleTypes": {
                        "title": "Article types",
                        "type": "array",
                        "description": "Optional PubMed publication type filters, for example Review, Clinical Trial, Meta-Analysis, or Randomized Controlled Trial.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "journals": {
                        "title": "Journal filters",
                        "type": "array",
                        "description": "Optional journal names to restrict the search, for example Nature Medicine or The Lancet.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeAbstract": {
                        "title": "Include abstracts",
                        "type": "boolean",
                        "description": "Fetch full PubMed XML records and include article abstracts when available.",
                        "default": true
                    },
                    "includeMeshTerms": {
                        "title": "Include MeSH terms and keywords",
                        "type": "boolean",
                        "description": "Extract MeSH descriptor terms and author keywords from PubMed XML records when available.",
                        "default": true
                    },
                    "apiKey": {
                        "title": "NCBI API key",
                        "type": "string",
                        "description": "Optional NCBI API key for higher throughput. Leave empty for normal public E-utilities access."
                    },
                    "email": {
                        "title": "Contact email for NCBI",
                        "type": "string",
                        "description": "Optional email sent to NCBI E-utilities as recommended by NCBI for API consumers."
                    },
                    "requestsPerSecond": {
                        "title": "Requests per second",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Conservative NCBI request rate. Without an API key the actor caps this at 3 requests/second.",
                        "default": 3
                    },
                    "batchSize": {
                        "title": "PMIDs per detail batch",
                        "minimum": 20,
                        "maximum": 200,
                        "type": "integer",
                        "description": "How many PMIDs to send to ESummary/EFetch in each API request.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
