← Back to Skills
Automation

linkdapi

foontinz By foontinz 👁 4 views ▲ 0 votes

Work with LinkdAPI Python SDK for accessing LinkedIn professional profile

GitHub
---
name: linkdapi
description: Work with LinkdAPI Python SDK for accessing LinkedIn professional profile and company data. Use when you need to fetch profile information, company data, job listings, or search for people/jobs on LinkedIn. The skill uses uv script pattern for ephemeral Python scripts with inline dependencies.
---

# LinkdAPI Python SDK

Python SDK for LinkdAPI — professional profile and company data from LinkedIn with enterprise-grade reliability.

> **Get your API key:** https://linkdapi.com/signup?ref=K_CZJSWF

## Quick Start Pattern

Use the **uv script pattern** for ephemeral Python scripts with inline dependencies:

```python
# /// script
# dependencies = [
#     "linkdapi",
# ]
# ///

from linkdapi import LinkdAPI

client = LinkdAPI("YOUR_API_KEY")
profile = client.get_profile_overview("ryanroslansky")
print(profile)
```

Run with:
```bash
uv run script.py
```

This installs dependencies automatically, runs the script, and cleans up — perfect for one-off tasks.

## Why This Pattern

- **No global installs**: Dependencies are managed per-script
- **Ephemeral by design**: Write, run, delete — no cleanup needed
- **Reproducible**: Everything needed is in one file
- **Fast**: uv handles dependency resolution and caching

## Writing Scripts

### Script Header Format

Always start with the uv script block:

```python
# /// script
# dependencies = [
#     "linkdapi",
#     # Add more if needed (e.g., "rich", "pandas")
# ]
# ///
```

### Common Tasks

**Get profile overview:**
```python
# /// script
# dependencies = ["linkdapi"]
# ///

from linkdapi import LinkdAPI

client = LinkdAPI("YOUR_API_KEY")
profile = client.get_profile_overview("ryanroslansky")

if profile.get('success'):
    data = profile['data']
    print(f"{data['fullName']} - {data.get('headline', '')}")
    print(f"Location: {data.get('location')}")
```

**Get company info:**
```python
# /// script
# dependencies = ["linkdapi"]
# ///

from linkdapi import LinkdAPI

client = LinkdAPI("YOUR_API_KEY")
company = client.get_company_info(name="google")

if company.get('success'):
    data = company['data']
    print(f"{data['name']}")
    print(f"Industry: {data.get('industry')}")
    print(f"Employees: {data.get('employeeCount', 'N/A')}")
```

**Search jobs:**
```python
# /// script
# dependencies = ["linkdapi"]
# ///

from linkdapi import LinkdAPI

client = LinkdAPI("YOUR_API_KEY")
result = client.search_jobs(
    keyword="Software Engineer",
    location="San Francisco, CA",
    time_posted="1week"
)

if result.get('success'):
    for job in result['data']['jobs'][:5]:
        print(f"{job['title']} at {job['company']}")
```

**Batch profile enrichment (async):**
```python
# /// script
# dependencies = ["linkdapi"]
# ///

import asyncio
from linkdapi import AsyncLinkdAPI

async def enrich():
    async with AsyncLinkdAPI("YOUR_API_KEY") as api:
        profiles = await asyncio.gather(
            api.get_profile_overview("ryanroslansky"),
            api.get_profile_overview("satyanadella"),
            api.get_profile_overview("jeffweiner08")
        )
        for p in profiles:
            if p.get('success'):
                print(p['data']['fullName'])

asyncio.run(enrich())
```

## Agent Workflow

When a user requests LinkedIn data:

1. **Identify the task** (profile lookup, company data, job search, etc.)
2. **Write a temporary script** in workspace with the uv script header
3. **Add dependencies** (usually just `"linkdapi"`, add others if needed)
4. **Import and use** LinkdAPI classes
5. **Run with `uv run`**
6. **Capture output** and report to user
7. **Delete the script** after use (optional)

### Example Workflow

User: *"Get the profile for jeffweiner08"*

Agent:
```bash
cat > /tmp/linkdapi_query.py << 'EOF'
# /// script
# dependencies = ["linkdapi"]
# ///

from linkdapi import LinkdAPI
import os

client = LinkdAPI(os.getenv("LINKDAPI_API_KEY"))
profile = client.get_profile_overview("jeffweiner08")

if profile.get('success'):
    data = profile['data']
    print(f"Name: {data['fullname']}")
    print(f"Headline: {data.get('headline', 'N/A')}")
    print(f"Location: {data.get('location', 'N/A')}")
    print(f"Company: {data.get('company', 'N/A')}")
else:
    print(f"Error: {profile.get('message')}")
EOF

uv run /tmp/linkdapi_query.py
rm /tmp/linkdapi_query.py
```

## Getting an API Key

To use LinkdAPI, you'll need an API key. Sign up at:

🔗 **https://linkdapi.com/signup?ref=K_CZJSWF**

Once registered, you'll get an API key that you can use to authenticate your requests.

## Authentication

Set the API key as an environment variable:

```bash
export LINKDAPI_API_KEY="your_api_key_here"
```

Use it in scripts:
```python
import os
from linkdapi import LinkdAPI

client = LinkdAPI(os.getenv("LINKDAPI_API_KEY"))
```

## Key API Methods

### Profiles
- `get_profile_overview(username)` — Basic profile info
- `get_profile_details(urn)` — Detailed profile data
- `get_contact_info(username)` — Email, phone, websites
- `get_full_profile(username=None, urn=None)` — Complete profile
- `get_full_experience(urn)` — Work history
- `get_education(urn)` — Education history
- `get_skills(urn)` — Skills & endorsements

### Companies
- `get_company_info(company_id=None, name=None)` — Company details
- `company_name_lookup(query)` — Search by name
- `get_company_employees_data(company_id)` — Employee stats
- `get_company_jobs(company_ids)` — Job listings

### Jobs
- `search_jobs(keyword, location, ...)` — Search job postings
- `get_job_details(job_id)` — Detailed job info

### Search
- `search_people(keyword, title, company, ...)` — Find people
- `search_companies(keyword, industry, ...)` — Find companies
- `search_posts(keyword, ...)` — Find posts

## Performance Tips

- Use `AsyncLinkdAPI` for batch operations (40x faster)
- Add `return_exceptions=True` in `asyncio.gather()` for graceful error handling
- Use context managers (`async with`) for proper resource cleanup

## Error Handling

Check responses and handle errors:

```python
result = client.get_profile_overview("username")

if result.get('success'):
    data = result['data']
    # Process data
else:
    print(f"API Error: {result.get('message')}")
```

## References

Full API documentation: https://linkdapi.com/docs
automation

Comments

Sign in to leave a comment

Loading comments...