# Retired Tool (discontinued) (`fatihai-tools/retired-tool-20`) Actor

This Actor has been discontinued and is no longer maintained.

- **URL**: https://apify.com/fatihai-tools/retired-tool-20.md
- **Developed by:** [fatih dağüstü](https://apify.com/fatihai-tools) (community)
- **Categories:** Lead generation, Business, Social media
- **Security:** Limited permissions
- **Stats:** 63 total users, 8 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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 Profile Scraper - Extract Public Profile Data | No Login | $3/1K

The most affordable **LinkedIn profile scraper** on Apify. Extract full name, headline, work experience, education, skills, and location from any public LinkedIn profile — **no login, no cookies, no LinkedIn account required**.

Perfect for recruiters, sales teams, and HR analysts who need LinkedIn data extraction at scale without risking account bans.

### Why Use This LinkedIn Profile Scraper?

- 🔓 **No Login Required** — Scrapes publicly visible profile pages without any account
- 🛡️ **Zero Account Risk** — No cookies means zero risk to your LinkedIn profile
- ⚡ **Lightweight & Fast** — HTTP requests only (no browser), runs on 256 MB memory
- 📋 **Full Profile Data** — Experience history, education, skills, connections, and more
- 🔍 **Two Input Modes** — Direct profile URLs or search by person's name
- 💾 **Multiple Export Formats** — JSON, CSV, Excel, XML, Google Sheets
- 💰 **Pay Per Result** — $3 per 1,000 profiles, no monthly commitment

### What LinkedIn Profile Information Do You Get?

| Field | Description | Example |
|-------|-------------|---------|
| `fullName` | Full name | Bill Gates |
| `headline` | Professional headline | Co-chair, Gates Foundation |
| `location` | City, state, country | Seattle, WA, United States |
| `summary` | About/bio section | Full text of the About section |
| `currentCompany` | Current employer | Bill & Melinda Gates Foundation |
| `currentTitle` | Current job title | Co-chair |
| `experience` | Work history array | `[{title, company, duration}, ...]` |
| `education` | Education history | `[{school, degree, dates}, ...]` |
| `skills` | Skills list | \["Public Speaking", "Philanthropy", ...] |
| `connections` | Connection count | 500+ |
| `profileUrl` | LinkedIn URL | linkedin.com/in/williamhgates |
| `photoUrl` | Profile photo URL | CDN image URL |

### How to Use

#### Option 1: Direct Profile URLs (Recommended)

Provide LinkedIn profile URLs for the most reliable results:

```json
{
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates",
        "https://www.linkedin.com/in/satyanadella",
        "https://www.linkedin.com/in/jeffweiner08"
    ],
    "maxResults": 50
}
```

#### Option 2: Search by Name

Find profiles using LinkedIn's public people directory:

```json
{
    "searchQueries": [
        "Elon Musk",
        "Satya Nadella",
        "Jensen Huang"
    ],
    "maxResults": 100
}
```

#### Option 3: Mixed Mode

Combine direct URLs and name searches in one run:

```json
{
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates"
    ],
    "searchQueries": [
        "Sundar Pichai",
        "Tim Cook"
    ],
    "maxResults": 50
}
```

### Full Output Example

```json
{
    "fullName": "Bill Gates",
    "headline": "Co-chair at Bill & Melinda Gates Foundation",
    "location": "Seattle, Washington, United States",
    "summary": "Co-chair of the Bill & Melinda Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft.",
    "currentCompany": "Bill & Melinda Gates Foundation",
    "currentTitle": "Co-chair",
    "experience": [
        {
            "title": "Co-chair",
            "company": "Bill & Melinda Gates Foundation",
            "duration": "2000 - Present"
        },
        {
            "title": "Co-founder & Chairman",
            "company": "Microsoft",
            "duration": "1975 - 2014"
        }
    ],
    "education": [
        {
            "school": "Harvard University",
            "degree": null,
            "dates": "1973 - 1975"
        }
    ],
    "skills": ["Public Speaking", "Strategic Partnerships", "Philanthropy"],
    "connections": "500+",
    "profileUrl": "https://www.linkedin.com/in/williamhgates",
    "photoUrl": "https://media.licdn.com/dms/image/...",
    "dataSource": "linkedin_direct",
    "scrapedAt": "2026-03-04T12:00:00.000Z"
}
```

### Input Parameters Reference

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `profileUrls` | Array | No | `[]` | Direct LinkedIn profile URLs (linkedin.com/in/...) |
| `searchQueries` | Array | No | `[]` | Names to search in LinkedIn's public directory |
| `maxResults` | Integer | No | `50` | Max profiles to scrape (0 = unlimited, max 10,000) |
| `proxy` | Object | No | Residential | Proxy configuration (residential strongly recommended) |

At least one of `profileUrls` or `searchQueries` must be provided.

### How LinkedIn Data Extraction Works

1. **Direct URLs** — Fetches each profile page via HTTP with residential proxy rotation
2. **Name Search** — Queries LinkedIn's public people directory (`/pub/dir`) to locate matching profiles, then scrapes each one
3. **Data Parsing** — Extracts profile information from multiple sources in the HTML:
   - JSON-LD structured data (`<script type="application/ld+json">`)
   - Open Graph meta tags (`og:title`, `og:description`, `og:image`)
   - Structured HTML sections (experience, education, skills)
   - Embedded JSON in `<code>` tags

### Pricing

Pay only for successful extractions. No subscription, no minimum commitment.

| Profiles | Cost |
|----------|------|
| 100 profiles | $0.30 |
| 1,000 profiles | $3.00 |
| 5,000 profiles | $15.00 |
| 10,000 profiles | $30.00 |

### LinkedIn Profile Scraper vs. Alternatives

| Feature | This Actor | PhantomBuster | Proxycurl | Dux-Soup |
|---------|-----------|---------------|-----------|----------|
| Price per 1K profiles | **$3** | ~$30+ | ~$10+ | Monthly plan |
| No login required | **Yes** | Requires account | API only | Requires account |
| Account ban risk | **Zero** | Medium-High | Low | Medium |
| Experience history | Yes | Yes | Yes | Partial |
| Education data | Yes | Yes | Yes | Partial |
| Skills extraction | Yes | Partial | Yes | No |
| Name search | Yes | No | No | No |
| Memory usage | **256-512 MB** | 2-4 GB | N/A | 2-4 GB |
| Pay per use | **Yes** | Monthly plan | Monthly plan | Monthly plan |

**Get full LinkedIn profile information at 6-10x lower cost than alternatives.**

### Top Use Cases

- **Recruiters** — Build candidate pipelines with full professional history and skill sets
- **Sales Teams** — Enrich lead lists with LinkedIn profile data for hyper-personalized outreach
- **HR Analytics** — Analyze talent pools, skill distributions, and career trajectories
- **B2B Lead Generation** — Identify decision-makers and map org structures by title
- **Market Research** — Study industry career patterns and professional network composition
- **Academic Research** — Analyze career mobility, skills trends, and professional backgrounds

### Tips for Best Results

1. **Direct URLs give best results** — Name searches may return multiple matches; direct URLs are unambiguous
2. **Residential proxies are pre-configured** — LinkedIn blocks datacenter IPs; always use residential proxies
3. **Public profiles only** — This scraper accesses only publicly visible data; private profiles return limited fields
4. **Start small, then scale** — Test with 10-20 profiles first to validate your query before running thousands
5. **Check `dataSource` field** — Indicates whether full data or limited data was available for each profile

### Known Limitations

- Only publicly visible LinkedIn profile data is accessible (no login = no private data)
- Some users restrict their public profile visibility — contact info, full skills lists may be hidden
- LinkedIn may serve simplified pages under heavy traffic (handled automatically with retries)
- Name search coverage depends on LinkedIn's public directory indexing

### Related Actors in This Suite

| Actor | What It Does | Price |
|-------|-------------|-------|
| [LinkedIn Company Scraper](https://apify.com/intelligent_yaffle/linkedin-company-scraper) | Scrape company pages for firmographic data | $3/1K |
| [LinkedIn Company Employees Finder](https://apify.com/intelligent_yaffle/linkedin-company-employees) | Find all employees at any company | $3/1K |
| [Contact Email Finder](https://apify.com/intelligent_yaffle/contact-email-finder) | Find verified email addresses from profiles | $3/1K |
| [Leads Finder](https://apify.com/intelligent_yaffle/leads-finder) | Full B2B lead gen with emails | $5/1K |
| [LinkedIn Jobs Scraper](https://apify.com/intelligent_yaffle/linkedin-jobs-scraper) | Extract LinkedIn job postings at scale | $2/1K |
| [Google Maps Email Extractor](https://apify.com/intelligent_yaffle/google-maps-email-extractor) | Local business contacts from Maps | $5/1K |
| [LinkedIn Post Scraper](https://apify.com/intelligent_yaffle/linkedin-post-scraper) | Scrape posts and engagement data | $2/1K |

### FAQ

**Does this LinkedIn profile scraper require a login or LinkedIn account?**
No. This actor works entirely without a LinkedIn account, login, cookies, or API keys. It only accesses data that LinkedIn shows publicly to all visitors.

**Is scraping LinkedIn public profiles legal?**
The actor accesses only publicly available information — the same data visible to anyone visiting the profile in a browser without logging in. The US Ninth Circuit Court (hiQ v. LinkedIn) affirmed that scraping publicly available data does not violate the CFAA. Always comply with applicable data protection laws (GDPR, CCPA) in your jurisdiction.

**Why are some profiles returning limited data?**
LinkedIn controls how much profile data is visible to non-logged-in visitors. Users who restrict their public visibility will return fewer fields. The `dataSource` field in each result indicates the data richness level.

**How many profiles can I scrape?**
Up to 10,000 per run. There is no hard cap from the actor side — practical limits depend on proxy quality and LinkedIn's rate limiting, both of which the actor manages automatically.

**Can I use this to find email addresses?**
This actor extracts LinkedIn profile data only. To find email addresses, combine it with the [Contact Email Finder](https://apify.com/intelligent_yaffle/contact-email-finder) actor, or use the [Leads Finder](https://apify.com/intelligent_yaffle/leads-finder) which bundles both steps.

# Actor input Schema

## `profileUrls` (type: `array`):

List of LinkedIn profile URLs to scrape directly (e.g. https://www.linkedin.com/in/williamhgates). The actor fetches each profile page and extracts data from HTML, meta tags, and JSON-LD.

## `searchQueries` (type: `array`):

Search for LinkedIn profiles by name (e.g. 'John Smith', 'Elon Musk'). The actor uses LinkedIn's public directory to find matching profiles and then scrapes them directly.

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

Maximum number of profiles to scrape. Set 0 for unlimited.

## `proxy` (type: `object`):

Proxy settings. Residential proxies are strongly recommended for LinkedIn scraping to avoid rate limiting.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates"
  ],
  "searchQueries": [],
  "maxResults": 50,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fatihai-tools/retired-tool-20").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 = {
    "profileUrls": ["https://www.linkedin.com/in/williamhgates"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("fatihai-tools/retired-tool-20").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 '{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call fatihai-tools/retired-tool-20 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fatihai-tools/retired-tool-20"
        }
    }
}
```

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/40y6y96qSzrEmDp6f/builds/4X5QseackRnj6IaOH/openapi.json
