# EconPapers / SSRN Scraper (`crawlerbros/ssrn-scraper`) Actor

Scrape EconPapers (econpapers.repec.org), a comprehensive economics and social science research repository with 1M+ papers. Browse recent working papers from NBER, search by keyword, or fetch individual papers by ID.

- **URL**: https://apify.com/crawlerbros/ssrn-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 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.
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

## EconPapers / SSRN Scraper

Scrape [EconPapers](https://econpapers.repec.org) — one of the largest freely accessible repositories of economics and social science research papers, indexing papers from NBER, World Bank, IMF, CEPR, and hundreds of other working paper series with 1M+ papers total.

> **Note:** This actor targets EconPapers (econpapers.repec.org), a comprehensive index of the [RePEc](https://repec.org/) database. SSRN required authentication that made scraping unreliable, so EconPapers — which covers the same research community without any login requirements — is used as the data source.

### What you can do

- **Search** for papers by keyword in titles (searches NBER working papers)
- **Get recent papers** from major economics series (NBER, Dallas Fed, and more)
- **Fetch specific papers** by paper handle/ID
- **Browse by JEL code** — filter papers by economic classification (C21 = Instrumental Variables, G12 = Asset Pricing, etc.)

### Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | Select | `search`, `recentPapers`, `byPaperId`, `byJELCode` |
| `query` | Text | Keyword to search in paper titles (mode=search) |
| `series` | Select | Paper series to browse: NBER Working Papers, Dallas Fed Economics, etc. |
| `paperIds` | String list | Paper handles like `nbrnberwo/35221` or bare numbers like `35221` (mode=byPaperId) |
| `jelCode` | Text | JEL classification code like `C21`, `G12`, `L0` (mode=byJELCode) |
| `maxItems` | Integer | Max papers to return (1–500, default: 20) |

#### Example inputs

**Search NBER for "machine learning" papers:**
```json
{
  "mode": "search",
  "query": "machine learning",
  "series": "nbrnberwo",
  "maxItems": 20
}
````

**Get recent NBER working papers:**

```json
{
  "mode": "recentPapers",
  "series": "nbrnberwo",
  "maxItems": 50
}
```

**Fetch specific papers by ID:**

```json
{
  "mode": "byPaperId",
  "paperIds": ["nbrnberwo/35221", "nbrnberwo/28232"]
}
```

**Browse Finance papers (JEL G12):**

```json
{
  "mode": "byJELCode",
  "jelCode": "G12",
  "series": "nbrnberwo",
  "maxItems": 20
}
```

### Output

Each record includes:

| Field | Description |
|-------|-------------|
| `paperId` | EconPapers paper handle (e.g. `nbrnberwo/35221`) |
| `title` | Paper title |
| `authors` | List of author names |
| `abstract` | Paper abstract |
| `jel` | List of JEL classification codes |
| `publicationDate` | Publication date (YYYY-MM or YYYY) |
| `paperUrl` | EconPapers or persistent link URL |
| `pdfUrl` | Direct PDF download URL (when available) |
| `networkName` | Name of the working paper series |
| `seriesCode` | Internal series code |
| `recordType` | Always `"paper"` |
| `scrapedAt` | ISO timestamp when the record was scraped |

#### Example output record

```json
{
  "paperId": "nbrnberwo/35221",
  "title": "Proposed Mergers Where Efficiencies Are Needed Most Might Be the Least Likely to Deliver Them",
  "authors": ["Robert Metcalfe", "Alexandre B. Sollaci", "Chad Syverson"],
  "abstract": "Mergers are commonly evaluated by weighing their expected market power effects...",
  "jel": ["L0"],
  "publicationDate": "2026-05",
  "paperUrl": "https://EconPapers.repec.org/RePEc:nbr:nberwo:35221",
  "pdfUrl": "http://www.nber.org/papers/w35221.pdf",
  "networkName": "NBER Working Papers",
  "seriesCode": "nbrnberwo",
  "recordType": "paper",
  "scrapedAt": "2026-05-25T10:00:00+00:00"
}
```

### Data Source

**EconPapers** (econpapers.repec.org) is hosted by Örebro University and indexes research from the Research Papers in Economics (RePEc) database. It provides free public access to metadata and abstracts for 1M+ working papers and journal articles across economics, finance, and related social sciences.

### JEL Classification Codes

JEL codes classify papers by economic topic:

| Code | Subject |
|------|---------|
| `A` | General Economics |
| `B` | History of Economic Thought |
| `C` | Mathematical Methods / Econometrics |
| `D` | Microeconomics |
| `E` | Macroeconomics |
| `F` | International Economics |
| `G` | Financial Economics |
| `H` | Public Economics |
| `I` | Health, Education, and Welfare |
| `J` | Labor and Demographic Economics |
| `K` | Law and Economics |
| `L` | Industrial Organization |
| `M` | Business Administration |
| `N` | Economic History |
| `O` | Economic Development |
| `Q` | Environmental Economics |
| `R` | Urban and Real Estate Economics |
| `Z` | Other Special Topics |

Common specific codes: `C21` (Instrumental Variables), `G12` (Asset Pricing), `J31` (Wages), `L11` (Production, Pricing), `D61` (Welfare Economics).

### Available Paper Series

| Series Code | Name |
|-------------|------|
| `nbrnberwo` | NBER Working Papers (National Bureau of Economic Research) |
| `fipd00001` | Dallas Fed Economics |
| `fthaascbu` | General Working Papers |
| `cycwpaper` | Working Papers |

### FAQ

**Does this require an API key or login?**
No. EconPapers is fully publicly accessible without registration.

**Can I access full paper text?**
EconPapers provides metadata and abstracts. Full paper PDFs are often available via the `pdfUrl` field, but access depends on the publisher (some are open access, others require subscriptions).

**How current is the data?**
NBER adds new papers continuously. The series listing shows the most recent papers at the top. Use `mode=recentPapers` to get the latest additions.

**What's the difference between `search` and `byJELCode`?**
`search` filters paper titles by keyword. `byJELCode` fetches each paper's full detail to check the JEL codes assigned by the authors.

**Why is `byJELCode` slower?**
It requires fetching individual paper pages to read JEL codes (which aren't in the listing page). Expect roughly 1-2 seconds per paper checked.

**Can I get papers from other series besides NBER?**
Yes — use the `series` input field to select from the available series. New series can be requested via the actor's issue tracker.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `query` (type: `string`):

Keyword to search for in paper titles (mode=search). E.g. 'inflation', 'climate change', 'inequality'. The search scans the most recent papers in the selected series.

## `series` (type: `string`):

EconPapers working paper series to browse (mode=recentPapers or mode=search).

## `paperIds` (type: `array`):

EconPapers paper handles in format 'series/id'. E.g. 'nbrnberwo/35221', 'nbrnberwo/28232'.

## `jelCode` (type: `string`):

JEL code to filter papers by (mode=byJELCode). E.g. 'C21' (Instrumental Variables), 'G12' (Asset Pricing), 'J31' (Wages). Use single letter for all sub-codes, e.g. 'C' for all mathematical methods.

## `maxItems` (type: `integer`):

Maximum number of papers to return.

## Actor input object example

```json
{
  "mode": "recentPapers",
  "query": "inflation",
  "series": "nbrnberwo",
  "paperIds": [],
  "maxItems": 5
}
```

# Actor output Schema

## `papers` (type: `string`):

Dataset containing all scraped EconPapers working papers.

# 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 = {
    "mode": "recentPapers",
    "query": "inflation",
    "series": "nbrnberwo",
    "paperIds": [],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/ssrn-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 = {
    "mode": "recentPapers",
    "query": "inflation",
    "series": "nbrnberwo",
    "paperIds": [],
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/ssrn-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 '{
  "mode": "recentPapers",
  "query": "inflation",
  "series": "nbrnberwo",
  "paperIds": [],
  "maxItems": 5
}' |
apify call crawlerbros/ssrn-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EconPapers / SSRN Scraper",
        "description": "Scrape EconPapers (econpapers.repec.org), a comprehensive economics and social science research repository with 1M+ papers. Browse recent working papers from NBER, search by keyword, or fetch individual papers by ID.",
        "version": "1.0",
        "x-build-id": "LiCr5jy9LTYReA7uf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~ssrn-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-ssrn-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/crawlerbros~ssrn-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-ssrn-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/crawlerbros~ssrn-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-ssrn-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "recentPapers",
                            "search",
                            "byPaperId",
                            "byJELCode"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "recentPapers"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search for in paper titles (mode=search). E.g. 'inflation', 'climate change', 'inequality'. The search scans the most recent papers in the selected series.",
                        "default": "inflation"
                    },
                    "series": {
                        "title": "Paper series",
                        "enum": [
                            "nbrnberwo",
                            "fipd00001",
                            "fthaascbu",
                            "cycwpaper"
                        ],
                        "type": "string",
                        "description": "EconPapers working paper series to browse (mode=recentPapers or mode=search).",
                        "default": "nbrnberwo"
                    },
                    "paperIds": {
                        "title": "Paper IDs (mode=byPaperId)",
                        "type": "array",
                        "description": "EconPapers paper handles in format 'series/id'. E.g. 'nbrnberwo/35221', 'nbrnberwo/28232'.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "jelCode": {
                        "title": "JEL classification code",
                        "type": "string",
                        "description": "JEL code to filter papers by (mode=byJELCode). E.g. 'C21' (Instrumental Variables), 'G12' (Asset Pricing), 'J31' (Wages). Use single letter for all sub-codes, e.g. 'C' for all mathematical methods."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of papers to return.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
