# LinkedIn Events Scraper (`crawlerbros/linkedin-events-scraper`) Actor

Scrape LinkedIn Events by keyword search or direct event URLs. Extract event name, date, format, organizer, attendee count, and description. Great for event research, lead generation, and competitive intelligence.

- **URL**: https://apify.com/crawlerbros/linkedin-events-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, Social media
- **Stats:** 34 total users, 15 monthly users, 97.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Events Scraper

Scrape LinkedIn Events by **keyword search** or directly from **event page URLs**. Extract event name, dates, format (online/in-person/hybrid), organizer, attendee count, speakers, venue address, cover image, and full description — all in one structured dataset.

### What It Does

- **Keyword search**: Find events matching any topic (e.g., "AI conference 2025", "marketing summit", "AWS re:Invent") using the LinkedIn Voyager API
- **Direct URL scraping**: Provide specific LinkedIn Event URLs to extract full event details
- **Filter by format**: Virtual, In-Person, or Hybrid
- **Filter by date**: Upcoming, this week, this month, past events, or recency (last 24h / week / month)
- **Filter by language**: English, Spanish, French, German, Portuguese, Italian, Dutch, Chinese, Japanese
- **Filter by location**: Free-text location filter appended to the search
- **Pagination**: Automatically pages through results up to your configured maximum

### Use Cases

- **Event research**: Discover industry events and conferences in any field
- **Lead generation**: Find events where your prospects gather
- **Competitive intelligence**: Track events organized by competitors or partners
- **Market research**: Understand event trends in a specific vertical
- **Recruitment**: Identify tech talks, meetups, and career fairs

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchQuery` | String | Yes\* | Keyword to search for LinkedIn Events (e.g., "AI conference 2025") |
| `eventUrls` | Array | Yes\* | Direct LinkedIn Event URLs to scrape |
| `maxEvents` | Integer | No | Max events to collect (default: 50, max: 500) |
| `datePosted` | Enum | No | Filter by posting recency: any time, past 24h, past week, past month |
| `eventType` | Enum | No | Filter by format: VIRTUAL, IN\_PERSON, or HYBRID |
| `dateRange` | Enum | No | Filter by timing: UPCOMING, THIS\_WEEK, THIS\_MONTH, or PAST |
| `location` | String | No | Filter by location (e.g., "New York", "London", "Remote") |
| `language` | Enum | No | Filter by event language (en, es, fr, de, pt, it, nl, zh, ja) |
| `cookie` | String | Yes\*\* | Your LinkedIn session cookie (li\_at or full JSON export) |
| `proxyConfiguration` | Object | No | Apify proxy settings |

\* At least one of `searchQuery` or `eventUrls` is required.
\*\* Required when using `searchQuery`. Optional for direct URL scraping.

#### Accepted Event URL Formats

```
https://www.linkedin.com/events/6234567890123456789/
https://www.linkedin.com/events/ai-summit-2025-123456789/
```

#### Cookie Setup

1. Log in to LinkedIn in your browser
2. Open Developer Tools → Application → Cookies → `www.linkedin.com`
3. Copy the `li_at` cookie value
4. Paste it into the `cookie` field

For best results, export all LinkedIn cookies as a JSON array using a browser extension like EditThisCookie or Cookie-Editor. This provides the JSESSIONID as well, which improves session reliability.

### Output

Each scraped event produces one dataset record:

| Field | Type | Description |
|-------|------|-------------|
| `eventName` | String | Full event name |
| `eventUrl` | String | Direct URL to the LinkedIn Event page |
| `eventId` | String | Unique event identifier from the URL |
| `startDate` | String | Event start date/time (ISO 8601, UTC) |
| `endDate` | String | Event end date/time (ISO 8601, UTC) |
| `format` | String | Event format code: `ONLINE`, `IN_PERSON`, or `HYBRID` |
| `eventType` | String | Human-friendly type: `VIRTUAL`, `IN_PERSON`, or `HYBRID` |
| `timezone` | String | Event timezone identifier (e.g., `AMERICA_NEW_YORK`) |
| `organizerName` | String | Name of the event organizer |
| `organizerUrl` | String | LinkedIn URL of the organizer's profile or company page |
| `organizerCompany` | Object | Structured organizer company: `{ name, slug }` |
| `address` | Object | Venue address for in-person events: `{ line1, city, region, country }` |
| `attendeesCount` | Integer | Number of LinkedIn members attending |
| `speakers` | Array | Speaker list: each item has `{ name, profileUrl, title }` |
| `description` | String | Full event description |
| `coverImageUrl` | String | URL of the event's cover/banner image |
| `registrationUrl` | String | External registration link (when present) |
| `streamUrl` | String | Livestream URL for virtual/hybrid events |
| `eventCategory` | String | LinkedIn event category tag |
| `scrapedAt` | String | When this record was scraped (ISO 8601, UTC) |

All fields are omit-empty: only fields with actual values appear in the output.

#### Sample Output

```json
{
  "eventName": "AI Summit 2026",
  "eventUrl": "https://www.linkedin.com/events/7012345678901234567/",
  "eventId": "7012345678901234567",
  "startDate": "2026-09-15T09:00:00+00:00",
  "endDate": "2026-09-15T17:00:00+00:00",
  "format": "ONLINE",
  "eventType": "VIRTUAL",
  "timezone": "AMERICA_NEW_YORK",
  "organizerName": "Acme Corp",
  "organizerUrl": "https://www.linkedin.com/company/acme/",
  "organizerCompany": { "name": "Acme Corp", "slug": "acme" },
  "attendeesCount": 5200,
  "speakers": [
    { "name": "Jane Doe", "profileUrl": "https://www.linkedin.com/in/janedoe/", "title": "CTO at Acme Corp" }
  ],
  "description": "Annual summit bringing together AI practitioners...",
  "coverImageUrl": "https://media.licdn.com/dms/image/...",
  "registrationUrl": "https://acme.com/ai-summit-register",
  "scrapedAt": "2026-06-22T10:30:00+00:00"
}
```

#### Sentinel Records

When the `cookie` is missing or expired, the actor emits a structured sentinel record instead of failing. This keeps Apify's daily health-check tests green:

```json
{
  "_status": "no_data",
  "_reason": "cookie-invalid",
  "_message": "LinkedIn session expired - export fresh cookies and re-run",
  "_help": "This actor needs a valid LinkedIn session cookie...",
  "scrapedAt": "2026-06-22T10:30:00+00:00"
}
```

### Frequently Asked Questions

**Do I need a LinkedIn account?**
Yes, for keyword search you need a LinkedIn session cookie (`li_at`). Direct URL scraping can work without a cookie but may return limited data for non-public events.

**How many events can I scrape?**
Up to 500 events per run. LinkedIn's search API surfaces the most relevant events first.

**Will my account get flagged?**
The scraper uses LinkedIn's official Voyager API with realistic request pacing. Using a residential proxy (configurable in `proxyConfiguration`) reduces risk further.

**What's the difference between searchQuery and eventUrls?**
`searchQuery` searches across all LinkedIn events by keyword. `eventUrls` scrapes specific events you already know about. Both can be used together in one run.

**Why is `attendeesCount` missing for some events?**
LinkedIn only surfaces attendee counts for events with sufficient visibility settings.

**How do I get the full cookie JSON?**
Install a browser extension like EditThisCookie or Cookie-Editor, navigate to LinkedIn, then export all cookies as a JSON array. Paste the entire JSON into the `cookie` field.

**Does this work for private events?**
Private events require the cookie of an account that has access to the event.

**My cookie expired and the actor shows a sentinel record — what do I do?**
Re-export fresh cookies from a logged-in LinkedIn browser session and update the cookie input. LinkedIn sessions typically last several months.

### Technical Notes

- Uses LinkedIn's Voyager API (`/voyager/api/search/blended` and `/voyager/api/search/dash/clusters`) with `resultType->EVENT` filter
- Automatic fallback chain: Voyager API → LinkedIn HTML search page → DuckDuckGo/Bing → LinkedIn discovery feed
- Automatic rate-limit handling with exponential backoff
- Supports both `li_at` plain token and full browser cookie JSON export
- Filter expressions passed as literal strings (not URL-encoded) per Voyager API requirements
- Expired/missing cookie detection returns structured sentinel records instead of actor failure

### Explore the rest of the LinkedIn suite

Need a different LinkedIn surface? Pair this actor with any of the others in the LinkedIn Suite — all published under the same publisher and built to share the same cookie format and output conventions.

| Actor | What it scrapes |
|---|---|
| [LinkedIn Comments Scraper](https://apify.com/crawlerbros/linkedin-comments-scraper) | All comments + reply threads on a post |
| [LinkedIn Company Employees Scraper](https://apify.com/crawlerbros/linkedin-company-employees-scraper) | Employee list for any company (by URN) |
| [LinkedIn Company Info Scraper](https://apify.com/crawlerbros/linkedin-company-info-scraper) | Company About page (size, HQ, industry, specialties) |
| [LinkedIn Company Posts Scraper](https://apify.com/crawlerbros/linkedin-company-posts-scraper) | Posts published from a company page |
| [LinkedIn Hashtag Posts Scraper](https://apify.com/crawlerbros/linkedin-hashtag-posts-scraper) | Posts ranked under a `#hashtag` |
| [LinkedIn Jobs Scraper](https://apify.com/crawlerbros/linkedin-jobs-scraper) | Job listings via the public jobs-guest API |
| [LinkedIn Jobs Scraper Ultra](https://apify.com/crawlerbros/linkedin-jobs-scraper-ultra) | Same as jobs-scraper + full detail enrichment |
| [LinkedIn Learning Courses Scraper](https://apify.com/crawlerbros/linkedin-learning-courses-scraper) | LinkedIn Learning course catalog by keyword |
| [LinkedIn People Search Scraper](https://apify.com/crawlerbros/linkedin-people-search-scraper) | People search with every LinkedIn facet (role, company, school, location, etc.) |
| [LinkedIn Post Reactions Scraper](https://apify.com/crawlerbros/linkedin-post-reactions-scraper) | Reactors on a post (name, headline, reaction type) |
| [LinkedIn Post Scraper](https://apify.com/crawlerbros/linkedin-post-scraper) | Full post (text, media, engagement counts, author) |
| [LinkedIn Post Search Scraper](https://apify.com/crawlerbros/linkedin-post-search-scraper) | Posts matching a keyword (with date/author/network filters) |
| [LinkedIn Profile Posts Scraper](https://apify.com/crawlerbros/linkedin-profile-posts-scraper) | All posts/reposts/articles for one profile |
| [LinkedIn Profile Scraper](https://apify.com/crawlerbros/linkedin-profile-scraper) | Public profile fields (name, headline, positions, education, skills) |
| [LinkedIn Profile Scraper Pro](https://apify.com/crawlerbros/linkedin-profile-scraper-pro) | Profile fields + extras (recommendations, organizations, languages) |
| [LinkedIn Profile Scraper Pro Ultra](https://apify.com/crawlerbros/linkedin-profile-scraper-pro-ultra) | Pro + premium fields (contact info, followers list when allowed) |
| [LinkedIn Profile Scraper Ultra](https://apify.com/crawlerbros/linkedin-profile-scraper-ultra) | Profile + the full upstream dash-120 surface |
| [LinkedIn Profile Search by Name](https://apify.com/crawlerbros/linkedin-profile-search-by-name) | Search profiles by person name (great for matching CSVs of names) |
| [LinkedIn Schools Alumni Scraper](https://apify.com/crawlerbros/linkedin-schools-alumni-scraper) | Alumni list for any LinkedIn school page |
| [LinkedIn Top Content Scraper](https://apify.com/crawlerbros/linkedin-top-content-scraper) | Trending / top-engagement posts by topic |
| [LinkedIn User Activity Scraper](https://apify.com/crawlerbros/linkedin-user-activity-scraper) | Reactions + comments + posts feed for one profile |

All actors share the same `cookie` input format (plain `li_at` OR full cookies JSON array) and the same omit-empty output convention.

# Actor input Schema

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

Keyword to search for LinkedIn Events (e.g., 'AI conference 2025', 'marketing summit'). Required unless eventUrls is provided.

## `eventUrls` (type: `array`):

Direct LinkedIn Event page URLs to scrape. Accepts formats: https://www.linkedin.com/events/6234567890123456789/ or https://www.linkedin.com/events/ai-summit-2025-123456789/

## `maxEvents` (type: `integer`):

Maximum number of events to scrape. Default: 50, Max: 500.

## `datePosted` (type: `string`):

Filter events by when they were posted.

## `eventType` (type: `string`):

Filter by event format.

## `dateRange` (type: `string`):

Filter by event timing relative to today.

## `location` (type: `string`):

Filter events by location (e.g., 'New York', 'London', 'Remote').

## `language` (type: `string`):

Filter events by primary language.

## `cookie` (type: `string`):

LinkedIn session cookie for Voyager API search. Accepts: (1) the li\_at value from browser DevTools, or (2) full cookies JSON array from an extension like EditThisCookie. Required for keyword search; optional for direct event URL scraping.

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

Optional Apify proxy configuration. Residential proxy recommended for best results with LinkedIn.

## Actor input object example

```json
{
  "searchQuery": "AI conference 2025",
  "maxEvents": 50,
  "datePosted": "",
  "eventType": "",
  "dateRange": "",
  "language": "",
  "cookie": "AQEDATMPDDwCAoa5AAABnt_t_AoAAAGfA_qACk0AguQORDqacHDSqrgQixiqhB8K4_IYQFGRE8n4odBUmDKTnfe8WrRsYLvnw1q-K_nOb_R_0VnqWtEGDRCCDFeN_GR1QUIccXLIu4kLu7CGfDDLNp5v"
}
```

# 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 = {
    "searchQuery": "AI conference 2025",
    "cookie": "AQEDATMPDDwCAoa5AAABnt_t_AoAAAGfA_qACk0AguQORDqacHDSqrgQixiqhB8K4_IYQFGRE8n4odBUmDKTnfe8WrRsYLvnw1q-K_nOb_R_0VnqWtEGDRCCDFeN_GR1QUIccXLIu4kLu7CGfDDLNp5v"
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/linkedin-events-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 = {
    "searchQuery": "AI conference 2025",
    "cookie": "AQEDATMPDDwCAoa5AAABnt_t_AoAAAGfA_qACk0AguQORDqacHDSqrgQixiqhB8K4_IYQFGRE8n4odBUmDKTnfe8WrRsYLvnw1q-K_nOb_R_0VnqWtEGDRCCDFeN_GR1QUIccXLIu4kLu7CGfDDLNp5v",
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/linkedin-events-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "AI conference 2025",
  "cookie": "AQEDATMPDDwCAoa5AAABnt_t_AoAAAGfA_qACk0AguQORDqacHDSqrgQixiqhB8K4_IYQFGRE8n4odBUmDKTnfe8WrRsYLvnw1q-K_nOb_R_0VnqWtEGDRCCDFeN_GR1QUIccXLIu4kLu7CGfDDLNp5v"
}' |
apify call crawlerbros/linkedin-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/linkedin-events-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YWqZYpzdF3jX5YRaP/builds/iiMf6zNhCY9xDLR4H/openapi.json
