# LinkedIn Scraper - Profiles, Companies, Jobs (No Cookie) (`viralanalyzer/linkedin-intelligence`) Actor

Scrape LinkedIn WITHOUT a cookie or login. Public profiles (name, headline, location, About, full work history), company pages & jobs — no li_at required. Bring your own proxy. Optional li_at adds skills, certifications & languages. Optional Gemini AI analysis.

- **URL**: https://apify.com/viralanalyzer/linkedin-intelligence.md
- **Developed by:** [viralanalyzer](https://apify.com/viralanalyzer) (community)
- **Categories:** Lead generation, Social media
- **Features:** Limited permissions
- **Stats:** 99 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 3.91 out of 5 stars

## Pricing

$8.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🔗 LinkedIn Scraper — Profiles, Companies & Jobs (No Cookie Required)

> 🔗 [View on Apify Store](https://apify.com/viralanalyzer/linkedin-intelligence) | 🇺🇸 English | [🇧🇷 Português](#português)

**Scrape LinkedIn without a cookie or login.** Get public **profiles** (name, headline, location, About, and full work history), **company pages**, **posts** and **job listings** — no `li_at` cookie, no LinkedIn account, no risk to yours.

> ✅ **No cookie required** for the core data — including the complete work history. An **optional** `li_at` cookie only adds the secondary fields (skills, certifications, languages). Bring your own residential proxy and pay only for the results you keep. Optional Gemini AI for lead scoring and strategic insights.

### ✨ Features

- **Profile scraping** — Name, job title, company, location, skills, experience, certifications, languages, profile completeness score
- **Company pages** — Industry, employee count, followers, specialties, headquarters, founding date, recent posts with analytics
- **Post extraction** — Content, likes, comments, shares, hashtags, mentions, word count, engagement metrics
- **Job listings** — Title, company, location, date posted, Easy Apply and Promoted tags (no login needed via public Guest API)
- **Search** — Find people, companies, posts, or jobs by keyword (LinkedIn native + Google fallback)
- **Content analytics** — Engagement distribution, trending hashtags, top mentions, average post length, media type breakdown
- **AI insights** — Optional Gemini-powered lead scoring, competitor analysis, content strategy, and networking recommendations
- **No cookie required** — Profiles, companies and jobs are extracted from LinkedIn's public pages; the `li_at` cookie is an **optional** upgrade that only adds skills, certifications and languages
- **Bring your own proxy (BYOP)** — Plug in your own residential proxy; the proxy cost is billed to your run, not marked up
- **Profile completeness** — Automatic scoring of profile strength (0-100%) based on filled sections
- **Auto-detect URLs** — Automatically identifies profile, company, post, or job URLs
- **Deep-scraping** — Top search results are automatically deep-scraped for full data
- **Rate limiting** — Randomized delays between requests to avoid detection

### 📥 Input

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `mode` | string | No | `"all"` | Mode: `profiles`, `company`, `posts`, `jobs`, `search`, `analytics`, or `all` |
| `urls` | string\[] | No | — | LinkedIn URLs to scrape (profile, company, or post URLs) |
| `searchKeywords` | string | No | — | Keywords for search mode (e.g. "machine learning engineer Brazil") |
| `searchType` | string | No | `"people"` | Search type: `people`, `companies`, `posts`, or `jobs` |
| `maxResults` | integer | No | 50 | Maximum results to scrape (1-500) |
| `linkedinCookie` | string | No | — | LinkedIn `li_at` session cookie for authenticated access |
| `geminiApiKey` | string | No | — | Google Gemini API key for AI-powered analysis |
| `jobLocation` | string | No | `"Brazil"` | Location filter for job search |
| `jobDatePosted` | string | No | `"r604800"` | Date filter: `r86400` (24h), `r604800` (week), `r2592000` (month), `""` (any) |
| `proxyConfiguration` | object | No | — | Proxy settings (residential recommended for LinkedIn) |

#### Input Example

```json
{
  "mode": "company",
  "urls": [
    "https://www.linkedin.com/company/google/",
    "https://www.linkedin.com/company/microsoft/"
  ],
  "maxResults": 10
}
```

### 📤 Output

Output varies by type. Each result includes a `type` field (`profile`, `company`, `post`, `job`, `search_result`, `content_analytics`, or `ai_analysis`).

#### Profile Fields

| Field | Type | Description |
|---|---|---|
| `type` | string | Always `"profile"` |
| `url` | string | LinkedIn profile URL |
| `name` | string | Full name |
| `jobTitle` | string | Current job title |
| `currentCompany` | string | Current employer |
| `location` | string | City/region |
| `country` | string | Country |
| `description` | string | Profile headline/description |
| `about` | string | About/summary section (up to 2000 chars) |
| `followers` | number | Follower count |
| `connections` | number | Connection count |
| `image` | string | Profile photo URL |
| `experience` | object\[] | Work history `[{title, company, duration}]` (up to 10) |
| `education` | string\[] | Education institutions |
| `skills` | string\[] | Listed skills (up to 20) |
| `certifications` | object\[] | Certifications `[{name, issuer}]` (up to 10) |
| `languages` | object\[] | Languages `[{language, proficiency}]` |
| `profileCompleteness` | number | Profile strength score (0-100) |
| `scrapedAt` | string | ISO 8601 scrape timestamp |

#### Company Fields

| Field | Type | Description |
|---|---|---|
| `type` | string | Always `"company"` |
| `url` | string | LinkedIn company page URL |
| `name` | string | Company name |
| `description` | string | Company description |
| `industry` | string | Industry sector |
| `employeeCount` | string | Employee count range |
| `followers` | number | Page follower count |
| `website` | string | Company website URL |
| `logo` | string | Company logo URL |
| `foundingDate` | string | Year founded |
| `headquarters` | string | Headquarters location |
| `specialties` | string\[] | Company specialties |
| `companyType` | string | Company type (Public, Private, etc.) |
| `recentPosts` | object\[] | Latest company posts with engagement |
| `contentAnalytics` | object | Engagement analytics for recent posts |
| `scrapedAt` | string | ISO 8601 scrape timestamp |

#### Job Fields

| Field | Type | Description |
|---|---|---|
| `type` | string | Always `"job"` |
| `id` | string | Job listing ID |
| `title` | string | Job title |
| `company` | string | Hiring company |
| `location` | string | Job location |
| `datePosted` | string | Posting date |
| `url` | string | Job listing URL |
| `tags` | string\[] | Tags (`PROMOTED`, `EASY_APPLY`) |
| `source` | string | Always `"LinkedIn Jobs"` |
| `scrapedAt` | string | ISO 8601 scrape timestamp |

#### Output Example

```json
{
  "type": "profile",
  "url": "https://www.linkedin.com/in/satyanadella/",
  "name": "Satya Nadella",
  "jobTitle": "Chairman and CEO at Microsoft",
  "currentCompany": "Microsoft",
  "location": "Redmond, Washington",
  "country": "US",
  "description": "Chairman and CEO at Microsoft",
  "followers": 11200000,
  "connections": 500,
  "image": "https://media.licdn.com/dms/image/v2/satya-nadella.jpg",
  "experience": [
    {
      "title": "Chairman and CEO",
      "company": "Microsoft",
      "duration": "Feb 2014 - Present"
    }
  ],
  "education": ["University of Wisconsin-Milwaukee", "University of Chicago Booth"],
  "skills": ["Cloud Computing", "Leadership", "Strategy", "Enterprise Software"],
  "profileCompleteness": 95,
  "scrapedAt": "2026-03-06T16:00:00.000Z"
}
```

### 📋 Use Cases

- **Lead Generation** — Find and qualify prospects by job title, company, and location
- **Competitor Analysis** — Monitor competitor company pages, hiring patterns, and content strategy
- **Job Market Research** — Track job listings by keyword, location, and posting date
- **Content Strategy** — Analyze trending posts, hashtags, and engagement patterns on LinkedIn
- **Sales Intelligence** — Profile scoring with AI-powered lead analysis and prioritization
- **Recruiting** — Find candidates by skills, experience, and certifications
- **Networking** — Identify key connections and warm introduction paths
- **Market Mapping** — Map companies by industry, size, and specialties

### ✅ Capabilities & Limits

Stated up front, so you do not pay a run to find out.

**Built here:** in `search` mode without an `li_at` cookie, LinkedIn's own search is never queried - that strategy only enters the list when a cookie is present. Keywords resolve through Brave, then Google, then Bing, with `site:linkedin.com/in/` dorks, stopping at the first engine with a hit. Search rows are SERP titles and snippets plus a LinkedIn URL, not scraped profile fields; feed those URLs back through `profiles` or `company` mode for the real data.

> **Heads up:** this Actor needs credentials you provide yourself (`geminiApiKey`). It cannot run without them.

| Input / feature | Supported | Notes |
|---|---|---|
| `mode` | ✅ | Choose what to scrape from LinkedIn. Profiles, Company pages and Jobs all work WITHOUT a li_at cookie on public data. Start with Profiles (name,… |
| `urls` | ✅ | List of LinkedIn URLs to scrape (profile URLs, company pages, or post URLs). |
| `searchKeywords` | ✅ | Keywords to search on LinkedIn (used in 'search' and 'jobs' modes). Example: 'data engineer Brazil' |
| `searchType` | ✅ | What type of LinkedIn search to perform. Jobs is the safest default when you are not providing a li_at cookie. |
| Result volume (`maxResults`) | ⚠️ | Maximum number of results to scrape. Start lower to control cost and only raise it when you need broader coverage. |
| `linkedinCookie` | ✅ | Leave empty — this actor works WITHOUT a cookie or login on public data (name, headline, location, About, and full work history for profiles; company… |
| `jobLocation` | ✅ | Location filter for LinkedIn job searches. Example: 'Brazil', 'São Paulo', 'Remote' |
| `jobDatePosted` | ✅ | Filter jobs by posting date. |
| **`geminiApiKey`** — credential | ⚠️ Optional | Google Gemini API key for AI-powered analysis (lead scoring, content insights). Get one free at ai.google.dev |
| Proxy | ⚠️ | Recommended: a RESIDENTIAL proxy for profile/company pages (LinkedIn serves an auth wall to datacenter IPs). Jobs mode works on datacenter. You can… |

### ❓ FAQ

**Q: Do I need a LinkedIn account or cookie?**
A: **No.** Profiles (name, headline, location, About, full work history), company pages and job listings all come from LinkedIn's public pages — no cookie, no login, no risk to your account. A `li_at` cookie is **optional** and only adds the secondary profile fields (skills, certifications, languages).

**Q: How do I find my li_at cookie?**
A: Log into LinkedIn in your browser, open DevTools (F12), go to Application > Cookies > linkedin.com, and copy the value of the `li_at` cookie.

**Q: Can LinkedIn block my account for using this?**
A: The actor uses randomized delays and respects rate limits. However, excessive scraping may trigger LinkedIn's anti-bot systems. Use residential proxies and reasonable `maxResults` values to minimize risk.

**Q: What does the AI analysis include?**
A: When a Gemini API key is provided, the actor generates lead scoring (1-10), engagement analysis, content strategy recommendations, hashtag strategy, networking opportunities, and actionable next steps based on all scraped data.

**Q: Why are some profile fields empty?**
A: LinkedIn restricts data visibility based on connection degree and privacy settings. Using an authenticated `li_at` cookie from an account connected to the target profile yields more complete data.

### 💰 Pricing

**$0.008 per result scraped**, Apify platform usage of the run is included — compute and proxy are not billed to you separately.

This actor uses **Pay Per Event (PPE)** pricing — you pay only per result you keep (profile, company, post, job, or search result). See the current per-result price on the **Pricing** panel of this actor's Apify Store page. Bring your own residential proxy and the proxy cost is billed to your run at Apify's rate, not marked up.

### 🔗 Related Actors

- [Instagram Reels Scraper](https://apify.com/viralanalyzer/instagram-reels-scraper) — Instagram metrics
- [YouTube Fast Scraper](https://apify.com/viralanalyzer/youtube-fast-scraper) — YouTube video metrics
- [TikTok Viral Scanner](https://apify.com/viralanalyzer/tiktok-viral-scanner) — TikTok profile data
- [CNPJ Enricher](https://apify.com/viralanalyzer/cnpj-enricher) — Brazilian company data enrichment

### 📝 Changelog

#### v2.1 (Current)

- **Repositioned as cookie-free**: profiles, companies and jobs are extracted from LinkedIn's public pages — no `li_at` cookie or login required. Validated: name, headline, location, About and full work history returned without any cookie.
- The `li_at` cookie is now an **optional** upgrade (adds skills, certifications, languages only).
- **Bring your own proxy (BYOP)**: the residential proxy cost is billed to your run, not marked up.
- Pricing aligned to market (see the Pricing panel).

#### v2.0

- Profile scraping with completeness scoring (0-100)
- Company page extraction with recent posts and content analytics
- Post scraping with engagement metrics and hashtag extraction
- Job listings via public Guest API (no login needed)
- Search mode with LinkedIn + Google fallback
- Content analytics engine (engagement, hashtags, mentions, media type breakdown)
- AI analysis via Gemini (lead scoring, competitor intelligence, content strategy)
- Auto-detect URL type (profile, company, post, job)
- Deep-scraping of top search results
- Rate limiting with randomized delays
- JSON-LD structured data extraction
- PPE charging per result scraped

***

<a name="português"></a>

## 🔗 LinkedIn Scraper — Perfis, Empresas e Vagas (Sem Cookie)

> 🔗 [View on Apify Store](https://apify.com/viralanalyzer/linkedin-intelligence) | [🇺🇸 English](#-linkedin-scraper--profiles-companies--jobs-no-cookie-required) | 🇧🇷 Português

**Extraia dados do LinkedIn sem cookie e sem login.** Obtenha **perfis** públicos (nome, headline, localização, sobre e histórico profissional completo), **páginas de empresas**, **posts** e **vagas** — sem cookie `li_at`, sem conta do LinkedIn, sem risco à sua.

> ✅ **Sem cookie** para o dado principal — incluindo o histórico profissional completo. Um cookie `li_at` **opcional** só adiciona os campos secundários (habilidades, certificações, idiomas). Traga o seu proxy residencial e pague só pelos resultados que ficar. IA Gemini opcional para scoring de leads e insights estratégicos.

### ✨ Funcionalidades

- **Scraping de perfis** — Nome, cargo, empresa, localização, habilidades, experiência, certificações, idiomas, score de completude
- **Páginas de empresas** — Setor, número de funcionários, seguidores, especialidades, sede, data de fundação, posts recentes com analytics
- **Extração de posts** — Conteúdo, curtidas, comentários, compartilhamentos, hashtags, menções, contagem de palavras, métricas de engajamento
- **Vagas de emprego** — Título, empresa, localização, data de publicação, tags Easy Apply e Promovida (sem login via API pública Guest)
- **Busca** — Encontre pessoas, empresas, posts ou vagas por palavra-chave (LinkedIn nativo + fallback Google)
- **Analytics de conteúdo** — Distribuição de engajamento, hashtags em alta, menções principais, tamanho médio de posts, tipos de mídia
- **Insights com IA** — Scoring de leads, análise competitiva, estratégia de conteúdo e recomendações de networking via Gemini (opcional)
- **Sem cookie** — Perfis, empresas e vagas vêm das páginas públicas do LinkedIn; o cookie `li_at` é um upgrade **opcional** que só adiciona habilidades, certificações e idiomas
- **Traga seu proxy (BYOP)** — Use seu próprio proxy residencial; o custo do proxy é cobrado no seu run, sem markup
- **Completude de perfil** — Pontuação automática de força do perfil (0-100%) baseada em seções preenchidas
- **Detecção automática de URLs** — Identifica automaticamente URLs de perfil, empresa, post ou vaga
- **Deep-scraping** — Melhores resultados de busca são automaticamente extraídos em profundidade
- **Rate limiting** — Delays aleatórios entre requisições para evitar detecção

### 📥 Entrada

| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
| `mode` | string | Não | `"all"` | Modo: `profiles`, `company`, `posts`, `jobs`, `search`, `analytics` ou `all` |
| `urls` | string\[] | Não | — | URLs do LinkedIn (perfil, empresa ou post) |
| `searchKeywords` | string | Não | — | Palavras-chave para modo busca (ex: "engenheiro machine learning Brasil") |
| `searchType` | string | Não | `"people"` | Tipo de busca: `people`, `companies`, `posts` ou `jobs` |
| `maxResults` | inteiro | Não | 50 | Máximo de resultados (1-500) |
| `linkedinCookie` | string | Não | — | Cookie de sessão `li_at` do LinkedIn para acesso autenticado |
| `geminiApiKey` | string | Não | — | Chave da API Google Gemini para análise com IA |
| `jobLocation` | string | Não | `"Brazil"` | Filtro de localização para vagas |
| `jobDatePosted` | string | Não | `"r604800"` | Filtro de data: `r86400` (24h), `r604800` (semana), `r2592000` (mês), `""` (qualquer) |
| `proxyConfiguration` | objeto | Não | — | Configuração de proxy (residencial recomendado para LinkedIn) |

#### Exemplo de Entrada

```json
{
  "mode": "company",
  "urls": [
    "https://www.linkedin.com/company/google/",
    "https://www.linkedin.com/company/microsoft/"
  ],
  "maxResults": 10
}
```

### 📤 Saída

A saída varia por tipo. Cada resultado inclui um campo `type` (`profile`, `company`, `post`, `job`, `search_result`, `content_analytics` ou `ai_analysis`).

#### Campos de Perfil

| Campo | Tipo | Descrição |
|---|---|---|
| `type` | string | Sempre `"profile"` |
| `url` | string | URL do perfil LinkedIn |
| `name` | string | Nome completo |
| `jobTitle` | string | Cargo atual |
| `currentCompany` | string | Empregador atual |
| `location` | string | Cidade/região |
| `country` | string | País |
| `description` | string | Headline/descrição do perfil |
| `about` | string | Seção sobre/resumo (até 2000 caracteres) |
| `followers` | número | Número de seguidores |
| `connections` | número | Número de conexões |
| `image` | string | URL da foto de perfil |
| `experience` | objeto\[] | Histórico profissional `[{title, company, duration}]` (até 10) |
| `education` | string\[] | Instituições de ensino |
| `skills` | string\[] | Habilidades listadas (até 20) |
| `certifications` | objeto\[] | Certificações `[{name, issuer}]` (até 10) |
| `languages` | objeto\[] | Idiomas `[{language, proficiency}]` |
| `profileCompleteness` | número | Score de força do perfil (0-100) |
| `scrapedAt` | string | Timestamp ISO 8601 da coleta |

#### Campos de Empresa

| Campo | Tipo | Descrição |
|---|---|---|
| `type` | string | Sempre `"company"` |
| `url` | string | URL da página da empresa |
| `name` | string | Nome da empresa |
| `description` | string | Descrição da empresa |
| `industry` | string | Setor/indústria |
| `employeeCount` | string | Faixa de funcionários |
| `followers` | número | Seguidores da página |
| `website` | string | Site da empresa |
| `logo` | string | URL do logo |
| `foundingDate` | string | Ano de fundação |
| `headquarters` | string | Localização da sede |
| `specialties` | string\[] | Especialidades da empresa |
| `companyType` | string | Tipo (Pública, Privada, etc.) |
| `recentPosts` | objeto\[] | Posts recentes com engajamento |
| `contentAnalytics` | objeto | Analytics de engajamento dos posts |
| `scrapedAt` | string | Timestamp ISO 8601 da coleta |

#### Campos de Vaga

| Campo | Tipo | Descrição |
|---|---|---|
| `type` | string | Sempre `"job"` |
| `id` | string | ID da vaga |
| `title` | string | Título da vaga |
| `company` | string | Empresa contratante |
| `location` | string | Localização da vaga |
| `datePosted` | string | Data de publicação |
| `url` | string | URL da vaga |
| `tags` | string\[] | Tags (`PROMOTED`, `EASY_APPLY`) |
| `source` | string | Sempre `"LinkedIn Jobs"` |
| `scrapedAt` | string | Timestamp ISO 8601 da coleta |

#### Exemplo de Saída

```json
{
  "type": "profile",
  "url": "https://www.linkedin.com/in/satyanadella/",
  "name": "Satya Nadella",
  "jobTitle": "Chairman and CEO at Microsoft",
  "currentCompany": "Microsoft",
  "location": "Redmond, Washington",
  "country": "US",
  "description": "Chairman and CEO at Microsoft",
  "followers": 11200000,
  "connections": 500,
  "image": "https://media.licdn.com/dms/image/v2/satya-nadella.jpg",
  "experience": [
    {
      "title": "Chairman and CEO",
      "company": "Microsoft",
      "duration": "Feb 2014 - Present"
    }
  ],
  "education": ["University of Wisconsin-Milwaukee", "University of Chicago Booth"],
  "skills": ["Cloud Computing", "Leadership", "Strategy", "Enterprise Software"],
  "profileCompleteness": 95,
  "scrapedAt": "2026-03-06T16:00:00.000Z"
}
```

### 📋 Casos de Uso

- **Geração de leads** — Encontre e qualifique prospects por cargo, empresa e localização
- **Análise competitiva** — Monitore páginas de concorrentes, padrões de contratação e estratégia de conteúdo
- **Pesquisa de mercado de trabalho** — Acompanhe vagas por palavra-chave, localização e data de publicação
- **Estratégia de conteúdo** — Analise posts em tendência, hashtags e padrões de engajamento no LinkedIn
- **Inteligência comercial** — Scoring de perfis com análise de leads via IA e priorização
- **Recrutamento** — Encontre candidatos por habilidades, experiência e certificações
- **Networking** — Identifique conexões-chave e caminhos para apresentações
- **Mapeamento de mercado** — Mapeie empresas por setor, tamanho e especialidades

### ❓ Perguntas Frequentes

**P: Preciso de uma conta do LinkedIn ou cookie?**
R: **Não.** Perfis (nome, headline, localização, sobre, histórico profissional completo), páginas de empresas e vagas vêm das páginas públicas do LinkedIn — sem cookie, sem login, sem risco à sua conta. O cookie `li_at` é **opcional** e só adiciona os campos secundários do perfil (habilidades, certificações, idiomas).

**P: Como encontro meu cookie li_at?**
R: Faça login no LinkedIn no navegador, abra o DevTools (F12), vá em Application > Cookies > linkedin.com e copie o valor do cookie `li_at`.

**P: O LinkedIn pode bloquear minha conta por usar isso?**
R: O actor usa delays aleatórios e respeita limites de taxa. Porém, extração excessiva pode acionar os sistemas anti-bot do LinkedIn. Use proxies residenciais e valores razoáveis de `maxResults` para minimizar riscos.

**P: O que a análise com IA inclui?**
R: Quando uma chave da API Gemini é fornecida, o actor gera scoring de leads (1-10), análise de engajamento, recomendações de estratégia de conteúdo, estratégia de hashtags, oportunidades de networking e próximos passos acionáveis baseados em todos os dados coletados.

**P: Por que alguns campos do perfil estão vazios?**
R: O LinkedIn restringe a visibilidade de dados com base no grau de conexão e configurações de privacidade. Usar um cookie `li_at` autenticado de uma conta conectada ao perfil alvo fornece dados mais completos.

### 💰 Preços

**$0.008 por resultado extraído**, o uso de plataforma da Apify está incluído — compute e proxy não são cobrados à parte.

Este actor usa precificação **Pay Per Event (PPE)** — você paga só por resultado que ficar (perfil, empresa, post, vaga ou resultado de busca). Veja o preço por resultado vigente no painel **Pricing** da página deste actor na Apify Store. Traga seu proxy residencial e o custo do proxy é cobrado no seu run pela tarifa da Apify, sem markup.

### 🔗 Actors Relacionados

- [Instagram Reels Scraper](https://apify.com/viralanalyzer/instagram-reels-scraper) — Métricas do Instagram
- [YouTube Fast Scraper](https://apify.com/viralanalyzer/youtube-fast-scraper) — Métricas do YouTube
- [TikTok Viral Scanner](https://apify.com/viralanalyzer/tiktok-viral-scanner) — Dados do TikTok
- [CNPJ Enricher](https://apify.com/viralanalyzer/cnpj-enricher) — Enriquecimento de dados empresariais

### 📝 Changelog

#### v2.1 (Atual)

- **Reposicionado como sem-cookie**: perfis, empresas e vagas vêm das páginas públicas do LinkedIn — sem cookie `li_at` nem login. Validado: nome, headline, localização, sobre e histórico profissional completo retornados sem nenhum cookie.
- O cookie `li_at` agora é upgrade **opcional** (só adiciona habilidades, certificações, idiomas).
- **Traga seu proxy (BYOP)**: o custo do proxy residencial é cobrado no seu run, sem markup.
- Preço alinhado ao mercado (ver painel Pricing).

#### v2.0

- Scraping de perfis com scoring de completude (0-100)
- Extração de páginas de empresas com posts recentes e analytics de conteúdo
- Scraping de posts com métricas de engajamento e extração de hashtags
- Vagas de emprego via API pública Guest (sem login)
- Modo busca com fallback LinkedIn + Google
- Motor de analytics de conteúdo (engajamento, hashtags, menções, tipos de mídia)
- Análise com IA via Gemini (scoring de leads, inteligência competitiva, estratégia de conteúdo)
- Detecção automática de tipo de URL (perfil, empresa, post, vaga)
- Deep-scraping dos melhores resultados de busca
- Rate limiting com delays aleatórios
- Extração de dados estruturados JSON-LD
- Cobrança PPE por resultado extraído

# Actor input Schema

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

Choose what to scrape from LinkedIn. Profiles, Company pages and Jobs all work WITHOUT a li_at cookie on public data. Start with Profiles (name, headline, location, About, full work history) or Jobs.

## `urls` (type: `array`):

List of LinkedIn URLs to scrape (profile URLs, company pages, or post URLs).

## `searchKeywords` (type: `string`):

Keywords to search on LinkedIn (used in 'search' and 'jobs' modes). Example: 'data engineer Brazil'

## `searchType` (type: `string`):

What type of LinkedIn search to perform. Jobs is the safest default when you are not providing a li_at cookie.

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

Maximum number of results to scrape. Start lower to control cost and only raise it when you need broader coverage.

## `linkedinCookie` (type: `string`):

Leave empty — this actor works WITHOUT a cookie or login on public data (name, headline, location, About, and full work history for profiles; company pages; job listings). Provide a li_at cookie ONLY if you also want to enrich profiles with skills, certifications and languages. To get it: log into LinkedIn, DevTools > Application > Cookies > li_at.

## `geminiApiKey` (type: `string`):

Google Gemini API key for AI-powered analysis (lead scoring, content insights). Get one free at ai.google.dev

## `jobLocation` (type: `string`):

Location filter for LinkedIn job searches. Example: 'Brazil', 'São Paulo', 'Remote'

## `jobDatePosted` (type: `string`):

Filter jobs by posting date.

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

Recommended: a RESIDENTIAL proxy for profile/company pages (LinkedIn serves an auth wall to datacenter IPs). Jobs mode works on datacenter. You can bring your own proxy here — the proxy cost is billed to your run.

## Actor input object example

```json
{
  "mode": "jobs",
  "searchKeywords": "data engineer",
  "searchType": "jobs",
  "maxResults": 5,
  "jobLocation": "Brazil",
  "jobDatePosted": "r604800"
}
```

# Actor output Schema

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

Dataset containing all scraped results. Each item follows the dataset schema.

# 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": "jobs",
    "searchKeywords": "data engineer",
    "searchType": "jobs",
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("viralanalyzer/linkedin-intelligence").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": "jobs",
    "searchKeywords": "data engineer",
    "searchType": "jobs",
    "maxResults": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("viralanalyzer/linkedin-intelligence").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 '{
  "mode": "jobs",
  "searchKeywords": "data engineer",
  "searchType": "jobs",
  "maxResults": 5
}' |
apify call viralanalyzer/linkedin-intelligence --silent --output-dataset

```

## MCP server setup

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

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/WEUuKs3SZ62Evviw1/builds/8fxkzfuyS5GW1kejG/openapi.json
