Submit SpiderPublicLinkedin Job
/api/v1/jobs/spiderPublicLinkedin/submitOverview
SpiderPublicLinkedin extracts LinkedIn company and people profile data using the Voyager API (linkedin-api library). It requires authenticated LinkedIn accounts managed via the admin API, with built-in account rotation, warmup support, and rate limiting.
LinkedIn Accounts Required
Unlike SpiderPublicInstagram, this worker requires authenticated LinkedIn accounts to function. Add accounts via the admin API before submitting jobs.
Best For
- Extracting company information (size, industry, specialties, headquarters)
- Getting people profiles (experience, education, skills)
- Finding companies by keywords and industry
- Finding people by keywords, location, company, or title
- Building B2B lead databases with verified LinkedIn data
Operation Modes
SpiderPublicLinkedin supports four operation modes:
| Mode | Description |
|---|---|
get_company | Fetch a single company profile |
get_profile | Fetch a single person profile |
search_companies | Search for companies by keywords |
search_people | Search for people with filters |
Request Body
payloadobjectrequiredJob configuration payload
priorityintegerdefault: 5Job priority (0-10, higher = processed first).
Response
job_idstringUnique job identifier (UUID format).
typestringAlways spiderPublicLinkedin.
statusstringInitial status: queued.
created_atstringJob creation timestamp (ISO 8601).
messagestringConfirmation message.
Example Requests
- cURL - Get Company
- cURL - Get Profile
- cURL - Search Companies
- cURL - Search People
- Python
- JavaScript
curl -X POST https://spideriq.ai/api/v1/jobs/spiderPublicLinkedin/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"mode": "get_company",
"public_id": "microsoft"
}
}'
curl -X POST https://spideriq.ai/api/v1/jobs/spiderPublicLinkedin/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"mode": "get_profile",
"linkedin_url": "https://linkedin.com/in/satyanadella"
}
}'
curl -X POST https://spideriq.ai/api/v1/jobs/spiderPublicLinkedin/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"mode": "search_companies",
"keywords": "AI startup San Francisco",
"max_results": 10
}
}'
curl -X POST https://spideriq.ai/api/v1/jobs/spiderPublicLinkedin/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"mode": "search_people",
"keywords": "CTO AI startup",
"location": "San Francisco",
"max_results": 20
}
}'
import requests
url = "https://spideriq.ai/api/v1/jobs/spiderPublicLinkedin/submit"
headers = {
"Authorization": "Bearer <your_token>",
"Content-Type": "application/json"
}
# Get company profile
data = {
"payload": {
"mode": "get_company",
"public_id": "microsoft",
"store_logo": True
}
}
response = requests.post(url, headers=headers, json=data)
job = response.json()
print(f"Job ID: {job['job_id']}")
const response = await fetch(
'https://spideriq.ai/api/v1/jobs/spiderPublicLinkedin/submit',
{
method: 'POST',
headers: {
'Authorization': 'Bearer <your_token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payload: {
mode: 'get_company',
public_id: 'microsoft',
store_logo: true
}
})
}
);
const job = await response.json();
console.log('Job ID:', job.job_id);
Example Response
{
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "spiderPublicLinkedin",
"status": "queued",
"created_at": "2026-01-18T14:30:00.000000",
"message": "Job submitted successfully"
}
Results Structure
Company Results (get_company)
typestringAlways company for company results.
public_idstringLinkedIn company public ID.
namestringCompany name.
descriptionstringCompany description/about text.
websitestringCompany website URL.
industrystringPrimary industry (e.g., "Software Development").
company_typestringType (e.g., "Public Company", "Privately Held").
founded_yearintegerYear founded.
specialtiesarrayList of company specialties.
headquartersobjectHQ location with city and country.
follower_countintegerLinkedIn followers count.
employee_countintegerApproximate employee count.
employee_rangestringEmployee range (e.g., "10001+", "201-500").
logo_urlstringOriginal LinkedIn CDN logo URL.
logo_url_hostedstringSpiderMedia hosted logo URL (permanent).
linkedin_urlstringFull LinkedIn company URL.
Profile Results (get_profile)
typestringAlways profile for person results.
public_idstringLinkedIn profile public ID.
first_namestringFirst name.
last_namestringLast name.
full_namestringCombined full name.
headlinestringProfessional headline.
summarystringProfile summary/about text.
locationstringLocation (e.g., "Greater Seattle Area").
industrystringIndustry field.
connectionsintegerConnection count (500+ shown as 500).
current_companystringCurrent company name.
current_positionstringCurrent job title.
experiencearrayWork experience history with company, title, dates.
educationarrayEducation history with school, degree, field of study.
skillsarrayList of skills.
profile_pic_urlstringOriginal LinkedIn CDN photo URL.
profile_pic_url_hostedstringSpiderMedia hosted photo URL (permanent).
linkedin_urlstringFull LinkedIn profile URL.
Complete Results Examples
Company Result
{
"success": true,
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "spiderPublicLinkedin",
"status": "completed",
"processing_time_seconds": 6.52,
"data": {
"type": "company",
"public_id": "microsoft",
"name": "Microsoft",
"description": "Every company has a mission. What's ours? To empower every person and every organization on the planet to achieve more.",
"website": "https://microsoft.com",
"industry": "Software Development",
"company_type": "Public Company",
"founded_year": 1975,
"specialties": ["Business Software", "Developer Tools", "Cloud Computing", "AI"],
"headquarters": {
"city": "Redmond",
"country": "United States"
},
"follower_count": 22000000,
"employee_count": 221000,
"employee_range": "10001+",
"logo_url": "https://media.licdn.com/dms/image/...",
"logo_url_hosted": "https://media.spideriq.ai/client-cli_abc123/linkedin_company_microsoft.jpg",
"linkedin_url": "https://www.linkedin.com/company/microsoft",
"metadata": {
"universal_name": "microsoft",
"source": "linkedin_voyager_api",
"has_hosted_logo": true
}
}
}
Profile Result
{
"success": true,
"job_id": "b2c3d4e5-f6g7-8901-bcde-fg2345678901",
"type": "spiderPublicLinkedin",
"status": "completed",
"processing_time_seconds": 5.23,
"data": {
"type": "profile",
"public_id": "satyanadella",
"first_name": "Satya",
"last_name": "Nadella",
"full_name": "Satya Nadella",
"headline": "Chairman and CEO at Microsoft",
"summary": "As Chairman and CEO of Microsoft, I lead a team focused on...",
"location": "Greater Seattle Area",
"industry": "Computer Software",
"connections": 500,
"current_company": "Microsoft",
"current_position": "Chairman and CEO",
"experience": [
{
"title": "Chairman and CEO",
"company": "Microsoft",
"location": "Redmond, Washington",
"start_date": {"year": 2014, "month": 2},
"end_date": null,
"description": null
},
{
"title": "Executive Vice President, Cloud and Enterprise",
"company": "Microsoft",
"start_date": {"year": 2011},
"end_date": {"year": 2014}
}
],
"education": [
{
"school": "University of Chicago Booth School of Business",
"degree": "Master of Business Administration",
"field_of_study": null
},
{
"school": "University of Wisconsin-Milwaukee",
"degree": "Master of Science",
"field_of_study": "Computer Science"
}
],
"skills": ["Leadership", "Strategy", "Technology", "Cloud Computing"],
"profile_pic_url": "https://media.licdn.com/dms/image/...",
"profile_pic_url_hosted": "https://media.spideriq.ai/client-cli_abc123/linkedin_profile_satyanadella.jpg",
"linkedin_url": "https://www.linkedin.com/in/satyanadella",
"metadata": {
"source": "linkedin_voyager_api",
"has_hosted_photo": true
}
}
}
Search Results
{
"success": true,
"job_id": "c3d4e5f6-g7h8-9012-cdef-gh3456789012",
"type": "spiderPublicLinkedin",
"status": "completed",
"processing_time_seconds": 8.15,
"data": {
"type": "company_search",
"keywords": "AI startup San Francisco",
"filters": {
"industry": null
},
"total_results": 10,
"results": [
{
"name": "OpenAI",
"universal_name": "openai",
"description": "OpenAI is an AI research and deployment company...",
"industry": "Artificial Intelligence",
"staff_count": 1500,
"headquarters": {"city": "San Francisco", "country": "United States"},
"logo_url": "https://media.licdn.com/..."
}
],
"metadata": {
"source": "linkedin_voyager_api"
}
}
}
Processing Time
| Configuration | Typical Time |
|---|---|
| Get company | 5-8 seconds |
| Get profile | 5-8 seconds |
| Search (10 results) | 8-12 seconds |
| With logo/photo upload | Add 2-4 seconds |
| With mobile proxy | Add 2-5 seconds |
Rate Limiting
LinkedIn has strict rate limits:
| Limit Type | Threshold |
|---|---|
| Safe requests per account per day | 30-50 |
| Built-in delay between requests | 5-10 seconds |
| Session break every | 20-30 requests |
Account Pool Scaling
Each LinkedIn account provides ~50 requests/day. Add more accounts via the admin API to scale capacity.
| Accounts | Daily Capacity |
|---|---|
| 1 | 30-50 profiles |
| 5 | 150-250 profiles |
| 10 | 300-500 profiles |
Error Cases
No Accounts Available
{
"success": false,
"status": "failed",
"error": "No available LinkedIn accounts. All accounts may be rate limited or exhausted."
}
Profile Not Found
{
"success": false,
"status": "failed",
"error": "LinkedIn profile/company not found: invalidcompany123"
}
Rate Limited
{
"success": false,
"status": "failed",
"error": "LinkedIn rate limit exceeded. Account user@example.com marked as rate limited."
}
Authentication Failed
{
"success": false,
"status": "failed",
"error": "LinkedIn authentication failed. Account may need verification."
}
IP Blocked
{
"success": false,
"status": "failed",
"error": "LinkedIn blocked the request. Mobile proxy required."
}
Admin Account Management
Before using SpiderPublicLinkedin, add LinkedIn accounts via the admin API:
# Add a new account
curl -X POST "https://spideriq.ai/api/v1/admin/linkedin/accounts" \
-H "X-Admin-Key: $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_email": "your-linkedin@example.com",
"password": "your-password",
"daily_request_limit": 50,
"is_new_account": true
}'
# List all accounts
curl "https://spideriq.ai/api/v1/admin/linkedin/accounts" \
-H "X-Admin-Key: $ADMIN_KEY"
# Check account stats
curl "https://spideriq.ai/api/v1/admin/linkedin/accounts/stats" \
-H "X-Admin-Key: $ADMIN_KEY"
Account Warmup
New accounts should use is_new_account: true to enable the warmup schedule (7-day ramp from 5 to 50 requests/day). This prevents triggering LinkedIn's anti-bot detection.