Read what a profile or company page publishes, search a topic across LinkedIn to see what an industry is actually talking about, find the people who hold a role, and map the companies in a niche.
Posts
Two modes on one endpoint. profile returns the posts of one person or company page; search returns the posts a topic query turns up across LinkedIn.
Costs 0.57 credits per post in search mode and 1.43 credits per post in profile mode. 20 posts is 11.4 credits searching, 28.5 from a profile.
The two prices are not a markup decision: posts pulled from a named profile cost us two and a half times what a topic search costs per post, and charging one average price meant profile runs subsidised by search runs.
Required attributes
- Name
query- Type
- string
- Description
A topic to search, or a profile or company URL when
typeisprofile. A bare slug works too:linkedin.com/in/username,in/usernameandusernameall resolve to the same profile.
Optional attributes
- Name
type- Type
- string
- Description
searchorprofile. Defaultsearch.
- Name
posts- Type
- integer
- Description
Posts to fetch, 5 to 50. Default 20. Capped by your plan.
- Name
sort- Type
- string
- Description
relevanceorrecent. Search mode only. Defaultrelevance.
Response fields
- Name
posts- Type
- array
- Description
Sorted by
engagement, highest first, not by date.
- Name
posts[].engagement- Type
- integer
- Description
Likes plus comments times three plus reposts times five. A comment or a repost costs the reader far more than a like does, so ranking on raw likes puts the wrong posts on top.
- Name
posts[].author_headline- Type
- string
- Description
The one-line title under the author's name, which is usually how they describe what they sell.
- Name
totals- Type
- object
- Description
likes,commentsandrepostssummed across the returned posts.
Request
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/social/linkedin/posts \
-H "Authorization: Bearer $PENGU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "b2b saas pricing", "type": "search", "posts": 20}'
Response
{
"data": {
"query": "b2b saas pricing",
"type": "search",
"checked_at": "2026-09-20T09:21:35.442Z",
"count": 20,
"totals": { "likes": 7412, "comments": 938, "reposts": 205 },
"posts": [
{
"url": "https://www.linkedin.com/posts/example-author_pricing-activity-7261234567890123456",
"text": "We raised prices 40% and churn went down. Here is what we changed first ...",
"author": "Example Author",
"author_headline": "Pricing strategy for B2B SaaS",
"author_url": "https://www.linkedin.com/in/example-author",
"likes": 1840,
"comments": 312,
"reposts": 96,
"engagement": 3256,
"posted_at": "2026-09-11T07:02:00.000Z",
"hashtags": ["pricing", "saas"]
}
]
},
"meta": {
"credits_charged": 8,
"credits_remaining": 2792,
"request_id": "9a1c7f33-0d5e-4a61-b2c8-7f4e1a9d0c35"
}
}
People
Find people by keyword, current job title, current company or location. Each profile comes back with name, headline, location, current company and URL: enough for a prospect list, or to find out who runs marketing at a competitor before you read their posts.
Costs 28.5 credits per page of 25 profiles, whatever the page holds. 25 profiles is 28.5 credits, 100 is 114.
The source bills a search page at one price whether it finds three people or twenty-five, so the endpoint does the same. Ask for 25, 50, 75 or 100: asking for 12 costs the same as asking for 25.
Attributes
At least one of the four is required.
- Name
query- Type
- string
- Description
Free-text search, for example
growth marketing fintech. LinkedIn search operators work.
- Name
title- Type
- string
- Description
Current job title to require, for example
Head of Marketing.
- Name
company- Type
- string
- Description
Current employer as a LinkedIn company URL or slug:
hubspotandlinkedin.com/company/hubspotresolve to the same page.
- Name
location- Type
- string
- Description
Current location as LinkedIn names it:
Spain,Mexico City,United Kingdom(notUK).
- Name
limit- Type
- integer
- Description
Profiles to fetch, 10 to 100. Default 25. Capped by your plan.
Response fields
- Name
pages_charged- Type
- integer
- Description
Search pages billed for this call.
countcan be lower when the search is narrow.
- Name
people[].open_to_work- Type
- boolean
- Description
Whether the profile carries the open-to-work badge.
Request
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/social/linkedin/people \
-H "Authorization: Bearer $PENGU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "head of growth", "location": "Spain", "limit": 25}'
Response
{
"data": {
"query": "head of growth",
"title": null,
"company": null,
"location": "Spain",
"checked_at": "2026-10-16T10:20:11.302Z",
"pages_charged": 1,
"count": 25,
"people": [
{
"url": "https://www.linkedin.com/in/example-person",
"name": "Example Person",
"headline": "Head of Growth at Example SaaS",
"location": "Madrid, Community of Madrid, Spain",
"country": "ES",
"company": "Example SaaS",
"company_url": "https://www.linkedin.com/company/example-saas",
"open_to_work": false,
"hiring": true,
"followers": 4120,
"photo_url": "https://media.licdn.com/dms/image/example.jpg"
}
]
},
"meta": {
"credits_charged": 28.5,
"credits_remaining": 2735,
"request_id": "c7d2e4f1-9a0b-4c3d-8e5f-1a2b3c4d5e6f"
}
}
Companies
Find companies by keyword, location or size. Each one comes back with its tagline, description, industry, website, headcount, followers, headquarters and specialities, so you can map a market and then run /v1/domains/overview on the websites that matter.
Costs 1.14 credits per company. 10 companies is 11.4 credits.
Attributes
At least one of query, location or size is required.
- Name
query- Type
- string
- Description
Free-text search, for example
seo agencyorfintech.
- Name
location- Type
- string
- Description
Company location as LinkedIn names it, for example
SpainorBarcelona.
- Name
size- Type
- string
- Description
Employee range to require:
1-10,11-50,51-200,201-500,501-1000,1001-5000,5001-10000or10001+.
- Name
limit- Type
- integer
- Description
Companies to fetch, 5 to 25. Default 10. Capped by your plan.
Response fields
- Name
companies- Type
- array
- Description
Sorted by followers, highest first.
- Name
companies[].employees- Type
- integer
- Description
Employees on LinkedIn, which is a floor on the real headcount.
employee_rangeis the bracket the company declares.
Request
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/social/linkedin/companies \
-H "Authorization: Bearer $PENGU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "marketing agency", "location": "Spain", "limit": 10}'
Response
{
"data": {
"query": "marketing agency",
"location": "Spain",
"size": null,
"checked_at": "2026-10-16T10:24:52.771Z",
"count": 10,
"companies": [
{
"url": "https://www.linkedin.com/company/example-agency",
"name": "Example Agency",
"slug": "example-agency",
"tagline": "Performance marketing for B2B SaaS",
"description": "We run paid search, paid social and SEO for software companies ...",
"industries": ["Advertising Services"],
"website": "https://example-agency.com",
"employees": 48,
"employee_range": "11-50",
"followers": 12840,
"headquarters": "Barcelona, Catalonia, Spain",
"founded": 2016,
"specialities": ["SEO", "Paid Media", "Analytics"],
"logo_url": "https://media.licdn.com/dms/image/example-logo.png"
}
]
},
"meta": {
"credits_charged": 11.4,
"credits_remaining": 2723.6,
"request_id": "d8e3f5a2-0b1c-4d4e-9f60-2b3c4d5e6f70"
}
}
