# LinkedIn Company Scraper (`crawlix/linkedin-company-scraper`) Actor

LinkedIn Company Scraper collects complete public company profiles and posts from any LinkedIn organization. Extract overview, industry, employee count, website, headquarters, locations, affiliated pages, similar pages, and latest updates into structured Excel, CSV, or JSON datasets.

- **URL**: https://apify.com/crawlix/linkedin-company-scraper.md
- **Developed by:** [Crawlix](https://apify.com/crawlix) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 company scrapeds

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?

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

The **LinkedIn Company Scraper** collects verified public organization profiles and feed updates from any company on LinkedIn. Provide company URLs or usernames, toggle optional office locations, affiliated subsidiaries, or similar pages, specify how many recent feed updates to collect, and every organization lands in your dataset as a structured, ready-to-use record with complete business details, follower counts, and post engagement metrics.

Use it as an automated lead enrichment engine, a competitor tracking tool, or a reliable pipeline to scrape LinkedIn company page data directly into Excel, CSV, or JSON formats without manual browsing.

***

### Overview & Core Capabilities: LinkedIn Company Scraper

The **LinkedIn Company Scraper** is built for one primary purpose: converting public LinkedIn company links and handles into comprehensive, structured corporate datasets. Instead of manually navigating through organization overviews, copying addresses, noting employee counts, and transcribing recent posts, this tool extracts complete public company records in a single automated run.

#### What This LinkedIn Company Scraper Extracts:

- **Core Company Intelligence**: Official organization name, verified username handle, canonical URL, headline tagline, full about overview, website address, primary industry, and ownership type.
- **Corporate Scale & History**: Official employee size ranges, founding year, global headquarters address, and declared domain specialties.
- **Audience Metrics & Brand Assets**: Public follower numbers, high-resolution logo links, and cover banner assets.
- **Configurable Detail Filters**: Dedicated toggle controls to selectively include or exclude office locations, affiliated subsidiaries, and recommended competitor pages.
- **Feed Posts & Updates**: Direct post links, publication dates, full post text, `#hashtags`, tagged `@mentions`, destination links, attached images, video embeds, article cards with domains, documents, and public engagement counts (likes, comments count, reposts, total reactions).
- **Open Job Postings & Hiring Intelligence**: Job titles, locations, publication dates, salary/compensation info, seniority levels, employment types, job functions, industries, applicant counts, full job descriptions, and direct apply links with pagination and date/applicant filters.

Whether you execute the **LinkedIn Company Scraper** for one-off market research or integrate it into scheduled ETL pipelines, every output row adheres to a predictable, documented format so your spreadsheets and database schemas never break.

***

### Practical Use Cases & Applications

Engineering, sales, and analytics teams deploy the **LinkedIn Company Scraper** across numerous mission-critical business workflows:

1. **B2B Lead Enrichment & Account Scoring**: Feed your CRM with verified company size, primary industry, official domain, and corporate specialties to qualify inbound prospects instantly.
2. **Competitor Benchmarking & Activity Tracking**: Run the **LinkedIn Company Scraper** on rival organizations weekly to monitor positioning shifts, new product announcements, and audience growth rates.
3. **Market Mapping & Territory Planning**: Use the locations toggle to extract global branch networks and regional facilities for geographic market analysis.
4. **Corporate Hierarchy & Subsidiary Discovery**: Leverage the affiliated pages output to uncover parent corporations, sister companies, and acquired brand entities.
5. **Content Strategy & Engagement Analysis**: Collect recent feed updates across top industry leaders using the **LinkedIn Company Scraper** to analyze what messaging, media formats, and themes generate the highest audience interactions.
6. **Investment & Due Diligence Research**: Gather objective historical indicators such as founding dates, headquarter locations, and verified employee ranges for market intelligence reports.

Each use case starts the same way: supply your company targets, select your preferred options, and let the **LinkedIn Company Scraper** handle the data extraction.

***

### Target Audiences & Engineering Teams

The **LinkedIn Company Scraper** is engineered to serve both technical teams and business analysts:

- **Growth Marketers & Sales Development Teams**: Quickly build targeted account lists (ABM) enriched with verified website links, headquarters, and employee brackets.
- **Data Engineers & ETL Architects**: Ingest clean, structured JSON and CSV outputs into warehouses like BigQuery, Snowflake, and PostgreSQL without brittle custom web maintenance.
- **Market Researchers & Strategy Analysts**: Gather consistent cross-industry samples across thousands of firms with automated, hands-off execution.
- **Recruitment & Talent Intelligence Specialists**: Monitor company scale, office footprints, and recent corporate developments to forecast hiring demand.

***

### Key Architectural Advantages & Reliability

| Operational Capability | LinkedIn Company Scraper | Manual Data Entry | Basic Browser Add-ons |
|---|---|---|---|
| **Data Structure** | Standardized JSON, CSV, Excel | Unstructured, inconsistent | Often misses nested lists |
| **Feed Updates Collection** | Automatic multi-page feed retrieval | Slow manual copy-pasting | Cuts off after 2–3 updates |
| **Location Data** | Full global office addresses | Hard to capture all branches | Rarely extracted |
| **Affiliated & Similar Pages** | Structured subsidiary hierarchy | Requires visiting multiple tabs | Not captured |
| **Resilient Restarts** | Resumes seamlessly after server pauses | N/A | Fails completely on timeout |
| **Export Formats** | Instant JSON, CSV, Excel, XML | Manual reformatting | Limited export options |

***

### Quickstart: Step-by-Step Execution Guide

Getting started with the **LinkedIn Company Scraper** takes less than two minutes:

1. **Provide Company Targets**: In the input form, enter one or more LinkedIn company links (e.g., `https://www.linkedin.com/company/google`) or company handles (e.g., `microsoft`).
2. **Configure Section Toggles**: Choose whether to include office locations, affiliated subsidiaries, and similar pages (all active by default).
3. **Set Post Volume**: Define how many recent feed updates to collect per company (set to `10` by default, or set to `0` for company overview records only).
4. **Start the Run**: Click **Start**. The scraper validates inputs, collects company profiles, retrieves feed posts, and streams results directly into the default dataset.
5. **Download Your Dataset**: Access the **Output** tab to export your records in Excel, CSV, JSON, or XML format.

*Note on Free Accounts*: Free Apify accounts can collect up to 50 items in total per run across all companies. Paid accounts have no item limits.

***

### Input Parameters & Configuration Reference

The **LinkedIn Company Scraper** accepts the following parameters:

| Setting Name | Type | Default | Description |
|---|---|---|---|
| `company_urls` | Array | `["https://www.linkedin.com/company/google"]` | Full public LinkedIn company page URLs to collect. Accepts links with tabs or query parameters. |
| `usernames` | Array | `["microsoft"]` | Company usernames or handles (the slug following `/company/` in the URL). One per line. |
| `include_locations` | Boolean | `true` | When enabled, extracts physical office addresses, headquarters, and branch facilities. |
| `include_affiliated_pages` | Boolean | `true` | When enabled, extracts affiliated subsidiaries, divisions, and sister organizations. |
| `include_similar_pages` | Boolean | `true` | When enabled, extracts recommended similar companies and competitors. |
| `max_posts` ($) | Integer | `10` | Maximum number of recent posts and feed updates to collect per company (maximum 80, as LinkedIn guest mode delivers up to ~70–80 recent posts per company). Set to `0` for profile data only. Collecting posts adds a small extra charge per post collected, shown on the pricing tab. |
| `max_jobs` ($) | Integer | `0` | Maximum open job postings to scrape per company (maximum 1,000, as LinkedIn guest mode delivers up to 1,000 open job postings per company). Set to `0` to skip jobs, or set higher to paginate through open positions. Collecting job listings adds a small extra charge per job scraped, shown on the pricing tab. |
| `jobs_date_posted` | Select | `"all"` | Filter job listings by publication date (`"all"`, `"past_month"`, `"past_week"`, or `"past_24_hours"`). |
| `jobs_under_10_applicants` | Boolean | `false` | When enabled, only returns job postings that currently have fewer than 10 applicants. |
| `scrape_job_details` | Boolean | `false` | When enabled, visits each job link to extract full descriptions, seniority level, employment type, job functions, industries, and apply URLs. |
| `proxyCountry` | Select | `"US"` | Regional connection exit country for web requests. Choose from 158+ supported worldwide countries. |

***

### Extracted Dataset Schema & Field Definitions

Every scraped organization produces a rich record in the dataset. Headline fields are bolded below:

| Field Name | Type | Description |
|---|---|---|
| `number` | Integer | Chronological sequence number of the result within the run. |
| **`company_id`** | String | Unique numeric identifier of the organization on LinkedIn (e.g. `1441`). |
| **`entity_urn`** | String | Canonical organization entity URN (e.g. `urn:li:organization:1441`). |
| **`company_name`** | String | The official public trade or registered name of the company on LinkedIn. |
| **`username`** | String | The unique company identifier handle or slug. |
| `universal_name` | String | Canonical universal name of the company. |
| **`linkedin_url`** | String | Direct canonical URL to the organization profile. |
| `tagline` | String | Corporate slogan or mission headline displayed under the company name. |
| `description` | String | Full overview description and about summary published by the company. |
| **`website`** | String | Official corporate website destination. |
| **`industry`** | String | Primary market category or industry classification. |
| **`company_size`** | String | Reported staff range (e.g., `10,001+ employees`, `501-1,000 employees`). |
| `employees_on_linkedin` | Integer | Total count of active members on LinkedIn associated with this company. |
| `headquarters` | String | Primary global headquarters city, state, and country. |
| `company_type` | String | Corporate structure (e.g., `Public Company`, `Privately Held`, `Non-profit`). |
| `founded_year` | Integer | Year of incorporation or founding. |
| `specialties` | Array | Core business capabilities, products, and focus domains. |
| **`follower_count`** | Integer | Total verified public audience following the organization. |
| `logo_url` | String | Direct URL to high-resolution square brand avatar. |
| `cover_image_url` | String | Direct URL to header banner imagery. |
| `cta_button_text` | String | Call-to-action button text on the profile (e.g., `Visit website`). |
| `cta_button_url` | String | Destination URL of the call-to-action button. |
| `verified` | Boolean | True if the company carries an official LinkedIn verification badge. |
| `stock_symbol` | String | Public stock exchange and ticker symbol if publicly traded. |
| `locations` | Array | Global office addresses, cities, postal codes, and branch designations. |
| `affiliated_pages` | Array | Affiliated brand entities, sister companies, and acquired subsidiaries. |
| `similar_pages` | Array | Relevant competitor and peer organizations. |
| **`posts_scraped_count`** | Integer | Total count of recent feed updates collected in this record. |
| **`posts`** | Array | List of structured feed updates containing post links, text, media assets, and social engagement numbers. |
| **`jobs_scraped_count`** | Integer | Total count of open job postings scraped for this company. |
| **`jobs`** | Array | Structured list of open job postings with titles, locations, compensation, seniority, functions, and direct apply links. |
| `raw_json_ld` | Object | Complete structured schema metadata extracted from the page. |
| `scraped_at` | String | Standard ISO 8601 UTC timestamp of data retrieval. |

#### Sample Dataset Record (JSON)

```json
{
  "number": 1,
  "company_id": "1441",
  "entity_urn": "urn:li:organization:1441",
  "company_input": "https://www.linkedin.com/company/google",
  "company_name": "Google",
  "username": "google",
  "universal_name": "google",
  "linkedin_url": "https://www.linkedin.com/company/google",
  "tagline": "Our mission is to organize the world's information and make it universally accessible and useful.",
  "description": "A problem isn't truly solved until it's solved for all. Googlers build products that help people expand what's possible.",
  "website": "https://about.google/",
  "industry": "Software Development",
  "company_size": "10,001+ employees",
  "employees_on_linkedin": 342109,
  "headquarters": "Mountain View, CA, United States",
  "company_type": "Public Company",
  "founded_year": 1998,
  "specialties": ["search", "ads", "mobile", "android", "online video", "cloud", "hardware", "ai"],
  "follower_count": 32800000,
  "logo_url": "https://media.licdn.com/dms/image/v2/C4D0BAQHiNSL6Or297w/company-logo_200_200/company-logo.png",
  "cover_image_url": "https://media.licdn.com/dms/image/v2/C4D1BAQGy_m6r/company-background_10000/banner.jpg",
  "cta_button_text": "Visit website",
  "cta_button_url": "https://about.google/",
  "verified": true,
  "stock_symbol": "NASDAQ: GOOGL",
  "locations": [
    {
      "address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, US",
      "city": "Mountain View",
      "is_headquarters": true
    }
  ],
  "affiliated_pages": [
    {
      "name": "YouTube",
      "url": "https://www.linkedin.com/company/youtube",
      "industry": "Online Audio and Video Media"
    }
  ],
  "similar_pages": [
    {
      "name": "Microsoft",
      "url": "https://www.linkedin.com/company/microsoft",
      "industry": "Software Development"
    }
  ],
  "posts_scraped_count": 1,
  "posts": [
    {
      "post_id": "7185038481234567890",
      "post_urn": "urn:li:activity:7185038481234567890",
      "post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7185038481234567890",
      "posted_date": "2026-04-12T14:30:00Z",
      "posted_time_ago": "3d",
      "text": "Excited to share our newest developments in scalable computing architecture. Read more at https://cloud.google.com/blog/ai-future #AI #Cloud",
      "hashtags": [
        "#AI",
        "#Cloud"
      ],
      "mentions": [
        "@GoogleCloud"
      ],
      "external_links": [
        "https://cloud.google.com/blog/ai-future"
      ],
      "media_type": "image",
      "media_urls": [
        "https://media.licdn.com/dms/image/v2/D4E22AQH/feedshare-shrink_800/media.jpg"
      ],
      "article_url": null,
      "article_title": null,
      "article_domain": null,
      "document_title": null,
      "document_pages": null,
      "is_poll": false,
      "is_repost": false,
      "likes_count": 1420,
      "comments_count": 87,
      "reposts_count": 45,
      "total_reactions_count": 1552
    }
  ],
  "jobs_scraped_count": 1,
  "jobs": [
    {
      "job_id": "4123456789",
      "job_urn": "urn:li:jobPosting:4123456789",
      "job_url": "https://www.linkedin.com/jobs/view/4123456789",
      "title": "Senior Software Engineer",
      "company_name": "Google",
      "location": "Mountain View, CA",
      "posted_date": "2026-10-10",
      "posted_time_ago": "1 week ago",
      "salary_or_benefits": "$180,000/yr - $240,000/yr",
      "seniority_level": "Mid-Senior level",
      "employment_type": "Full-time",
      "job_functions": [
        "Engineering",
        "Information Technology"
      ],
      "industries": [
        "Software Development",
        "Technology, Information and Internet"
      ],
      "applicants_count": "Over 200 applicants",
      "apply_url": "https://careers.google.com/jobs/results/4123456789",
      "description": "Lead and architect scalable distributed systems powering global services...",
      "description_html": "<p>Lead and architect scalable distributed systems powering global services...</p>",
      "is_actively_hiring": true,
      "is_easy_apply": false
    }
  ],
  "raw_json_ld": {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "Google",
    "url": "https://www.linkedin.com/company/google"
  },
  "scraped_at": "2026-10-16T10:15:30Z"
}
```

***

### Operational Constraints & Platform Limits

1. **Public Data Only**: The **LinkedIn Company Scraper** extracts strictly public information accessible on official organization profiles. Private member profiles, closed intranet feeds, and internal analytics are not collected.
2. **Missing Information Policy**: If an organization chooses not to publish a particular attribute (such as founding year or specialties), the field returns `null` or is omitted. The scraper never invents data.
3. **Media Links**: Image and video URLs link directly to content hosted on verified platform delivery networks. These external links may expire or rotate over time per the source network's policies.
4. **Account Limits**: Free Apify tiers are capped at a maximum of 50 items per run across all requested companies. Paid subscription tiers have unlimited volume.
5. **Post Volume Limit (Max 80 Posts per Company)**: LinkedIn's public guest architecture serves up to ~70–80 of the most recent corporate posts per company without login credentials. To protect performance and prevent unnecessary network calls, the actor caps post input at 80 posts per company and cleanly exits the moment the feed ends with zero warnings or errors.

***

### Best Practices & Performance Optimization

- **Run in Batches**: When running the **LinkedIn Company Scraper** across large lists, group related companies into batches of 10 to 50 organizations to easily review output segments.
- **Tune Post Volume**: If you only need organization metadata, set `max_posts` to `0` to execute runs in seconds.
- **Keep Filters Active**: Leaving locations and affiliated pages turned on provides a more complete corporate record with minimal added run duration.
- **Automate with Schedules**: Schedule the **LinkedIn Company Scraper** on a weekly cron schedule via the Apify Console to maintain fresh datasets without manual triggers.

***

### Troubleshooting & Frequently Asked Questions

#### What is the maximum number of posts I can scrape per company?

You can scrape up to **80 recent posts per company**. LinkedIn's public guest infrastructure exposes approximately 70–76 recent posts for any organization without requiring user logins. Once the available recent posts are collected, the actor exits pagination cleanly, saves all collected records, and moves directly to the next company.

#### Does the LinkedIn Company Scraper require login credentials?

No. The **LinkedIn Company Scraper** operates entirely on public web data and does not require you to provide cookies, account details, or credentials (100% ban-free and zero account risk).

#### What if an input company URL cannot be found?

If an entered link is mistyped or points to a deleted page, the run logs a warning, skips that single organization, and continues collecting the remaining companies without stopping.

#### Why did fewer posts return than requested in `max_posts`?

If an organization has only published 3 updates in total, the scraper collects all 3 available posts, reports that no further updates exist, and moves cleanly to the next company.

#### Is there an item limit on a free Apify plan?

Yes. Free accounts can collect up to 50 items in total per run. Upgrading to any paid Apify plan removes this ceiling.

#### Does the free limit apply per day or per run?

The limit applies per individual run. It is not a daily or lifetime cap.

#### What should I do if the log says "Free user detected" but I am on a paid plan?

Open an issue in the **Issues** tab on the actor console with your Apify plan name and the Run ID, and our team will resolve it quickly.

#### Does this actor scrape individual comments or employee profiles?

No. The **LinkedIn Company Scraper** extracts public organization profiles, company size ranges, and post feeds with their engagement metrics. It does not scrape individual employee personal profiles or nested comment discussion threads.

***

### Code Integration: Python, JavaScript & REST API

Integrate the **LinkedIn Company Scraper** programmatically into your applications using official client libraries:

#### Python (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run_input = {
    "company_urls": [
        {"url": "https://www.linkedin.com/company/google"}
    ],
    "usernames": ["microsoft"],
    "include_locations": True,
    "include_affiliated_pages": True,
    "include_similar_pages": True,
    "max_posts": 10,
    "max_jobs": 10,
    "jobs_date_posted": "all",
    "jobs_under_10_applicants": False,
    "scrape_job_details": True,
    "proxyCountry": "US"
}

run = client.actor("linkedin-company-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"Company: {item.get('company_name')} | Jobs: {item.get('jobs_scraped_count')}")
```

#### JavaScript / Node.js (`apify-client`)

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

const client = new ApifyClient({
    token: 'YOUR_APIFY_API_TOKEN',
});

const runInput = {
    company_urls: [
        { url: 'https://www.linkedin.com/company/google' }
    ],
    usernames: ['microsoft'],
    include_locations: true,
    include_affiliated_pages: true,
    include_similar_pages: true,
    max_posts: 10,
    max_jobs: 10,
    jobs_date_posted: 'all',
    jobs_under_10_applicants: false,
    scrape_job_details: true,
    proxyCountry: 'US'
};

const run = await client.actor('linkedin-company-scraper').call(runInput);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

items.forEach((company) => {
    console.log(`${company.company_name} - ${company.website} (${company.jobs_scraped_count || 0} jobs)`);
});
```

#### Direct REST API (cURL)

```bash
curl --request POST \
  --url "https://api.apify.com/v2/acts/linkedin-company-scraper/runs?token=YOUR_APIFY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "company_urls": [{"url": "https://www.linkedin.com/company/google"}],
    "usernames": ["microsoft"],
    "max_posts": 10,
    "max_jobs": 10,
    "jobs_date_posted": "all",
    "jobs_under_10_applicants": false,
    "scrape_job_details": true,
    "include_locations": true
  }'
```

***

### Technical Architecture Glossary

| Term | Definition |
|---|---|
| **Actor Run** | A single execution of the **LinkedIn Company Scraper** initialized via web UI, API, or automated schedule. |
| **Default Dataset** | The storage container generated automatically for each run, accessible in JSON, CSV, Excel, and XML formats. |
| **Item Limit** | The maximum total records a free account may collect during one execution (50 records). |
| **Feed Updates** | Chronological public messages, announcements, and media posts published by the organization. |
| **Subordinate / Affiliated Pages** | Distinct brand pages and organizational entities associated with a parent corporation. |

***

### Complementary Scrapers in the Ecosystem

Expand your market intelligence workflows with our complementary scraping actors:

- **Meta Ad Scraper**: Collect running ads, creative assets, spend disclosures, and audience impressions across Facebook and Instagram advertisers.
- **Meta Ad Search Actor**: Search the public Meta Ad Library by brand keyword or niche to identify active advertisers worldwide.
- **Social Media Profile Scrapers**: Gather verified audience metrics, engagement benchmarks, and viral content trends across major social platforms.

***

### Support & Feedback Channels

If you encounter unexpected errors, missing fields, or have feature suggestions for the **LinkedIn Company Scraper**:

- Navigate to the **Issues** tab on this actor's console page.
- Create a new ticket with your **Run ID**, your target input company, and a short summary of the expected outcome.
- Our team monitors issues actively to ensure seamless operation across all public company pages.

# Actor input Schema

## `company_urls` (type: `array`):

Links of the LinkedIn company pages you want to collect. Accepted formats:

- https://www.linkedin.com/company/google
- https://www.linkedin.com/company/microsoft/
- links with tracking parameters or sub-tabs.

Each company is collected independently and results show the exact organization name.

## `usernames` (type: `array`):

LinkedIn company usernames or handles, for example google, microsoft, or chipotle-mexican-grill. One per line. Type each one exactly as it appears in the company page link after linkedin.com/company/. They work identically to company links.

## `include_locations` (type: `boolean`):

When turned on, extracts all physical office addresses, headquarters, and branch locations published on the company overview. Turned on by default.

## `include_affiliated_pages` (type: `boolean`):

When turned on, extracts affiliated company pages, subsidiaries, and related organizations listed on the company profile. Turned on by default.

## `include_similar_pages` (type: `boolean`):

When turned on, extracts similar or competitor pages recommended on the company profile. Turned on by default.

## `max_posts` (type: `integer`):

Maximum number of recent posts and feed updates to collect for each company (maximum 80, as LinkedIn guest mode delivers up to ~70–80 recent posts per company). Set to 0 to collect company profile data only. Collecting posts adds a small charge per post collected, shown on the pricing tab. A free Apify account collects up to 50 items in total per run across all companies; a paid plan can collect up to 80 posts per company.

## `max_jobs` (type: `integer`):

Maximum number of job postings to scrape for each company (maximum 1,000, as LinkedIn guest mode delivers up to 1,000 open job postings per company). Set to 0 to skip job scraping and scrape company overview/posts only. Set higher to paginate through available open positions. Collecting job listings adds a small charge per job scraped, shown on the pricing tab.

## `jobs_date_posted` (type: `string`):

Filter job postings by publication date. Select 'All time', 'Past month', 'Past week', or 'Past 24 hours'. Only one date filter can be active at a time.

## `jobs_under_10_applicants` (type: `boolean`):

When turned on, only returns job postings that currently have fewer than 10 applicants.

## `scrape_job_details` (type: `boolean`):

When turned on, visits each job posting link to scrape full job descriptions, seniority level, employment type, job functions, industries, applicant count, and direct apply link.

## `proxyCountry` (type: `string`):

The country your run connects from. Pick the one closest to your target market. If a country is not available right now, the run connects from the United States instead and the log says so.

## Actor input object example

```json
{
  "company_urls": [
    {
      "url": "https://www.linkedin.com/company/google"
    }
  ],
  "usernames": [
    "microsoft"
  ],
  "include_locations": true,
  "include_affiliated_pages": true,
  "include_similar_pages": true,
  "max_posts": 10,
  "max_jobs": 0,
  "jobs_date_posted": "all",
  "jobs_under_10_applicants": false,
  "scrape_job_details": false,
  "proxyCountry": "US"
}
```

# Actor output Schema

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

Every row this run delivered. Use the Export button on the Output tab for CSV, Excel, JSON or XML.

# 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 = {
    "company_urls": [
        {
            "url": "https://www.linkedin.com/company/google"
        }
    ],
    "usernames": [
        "microsoft"
    ],
    "include_locations": true,
    "include_affiliated_pages": true,
    "include_similar_pages": true,
    "max_posts": 10,
    "max_jobs": 0,
    "jobs_date_posted": "all",
    "jobs_under_10_applicants": false,
    "scrape_job_details": false,
    "proxyCountry": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlix/linkedin-company-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 = {
    "company_urls": [{ "url": "https://www.linkedin.com/company/google" }],
    "usernames": ["microsoft"],
    "include_locations": True,
    "include_affiliated_pages": True,
    "include_similar_pages": True,
    "max_posts": 10,
    "max_jobs": 0,
    "jobs_date_posted": "all",
    "jobs_under_10_applicants": False,
    "scrape_job_details": False,
    "proxyCountry": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("crawlix/linkedin-company-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 '{
  "company_urls": [
    {
      "url": "https://www.linkedin.com/company/google"
    }
  ],
  "usernames": [
    "microsoft"
  ],
  "include_locations": true,
  "include_affiliated_pages": true,
  "include_similar_pages": true,
  "max_posts": 10,
  "max_jobs": 0,
  "jobs_date_posted": "all",
  "jobs_under_10_applicants": false,
  "scrape_job_details": false,
  "proxyCountry": "US"
}' |
apify call crawlix/linkedin-company-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlix/linkedin-company-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/CbkQog3Ex1YYlB558/builds/ORIeb2cZdSgiIgTah/openapi.json
