LinkedIn

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.


POST/v1/social/linkedin/posts

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.

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 type is profile. A bare slug works too: linkedin.com/in/username, in/username and username all resolve to the same profile.

Optional attributes

  • Name
    type
    Type
    string
    Description

    search or profile. Default search.

  • Name
    posts
    Type
    integer
    Description

    Posts to fetch, 5 to 50. Default 20. Capped by your plan.

  • Name
    sort
    Type
    string
    Description

    relevance or recent. Search mode only. Default relevance.

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, comments and reposts summed across the returned posts.

Request

POST
/v1/social/linkedin/posts
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"
  }
}

POST/v1/social/linkedin/people

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.

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: hubspot and linkedin.com/company/hubspot resolve to the same page.

  • Name
    location
    Type
    string
    Description

    Current location as LinkedIn names it: Spain, Mexico City, United Kingdom (not UK).

  • 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. count can 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

POST
/v1/social/linkedin/people
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"
  }
}

POST/v1/social/linkedin/companies

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.

Attributes

At least one of query, location or size is required.

  • Name
    query
    Type
    string
    Description

    Free-text search, for example seo agency or fintech.

  • Name
    location
    Type
    string
    Description

    Company location as LinkedIn names it, for example Spain or Barcelona.

  • Name
    size
    Type
    string
    Description

    Employee range to require: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000 or 10001+.

  • 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_range is the bracket the company declares.

Request

POST
/v1/social/linkedin/companies
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"
  }
}

Was this page helpful?