# LinkedIn Profile Posts API (https://www.socialcrawl.dev/platforms/linkedin/profile-posts) > List a LinkedIn member's recent posts, normalised to the SocialCrawl schema. The upstream serves this feed as ONE fixed window and has no working continuation token, so the response is always terminal (`pagination.has_more` is `false` and `next_cursor` is `null`) and a `cursor` is rejected rather than silently re-serving the first page. Use `limit` to control depth: it defaults to 20 and accepts up to 100, the provider's hard ceiling. Up to 50 the call is a flat 5 credits; above 50 it is metered at 2 credits per post returned (see the credit cost). A feed shorter than the requested `limit` simply returns everything the member has posted. **Older than the most recent 100.** Read the row count first: if this endpoint returns fewer posts than your `limit`, that is the member's entire history and there is nothing further back to fetch. If it returns exactly 100 the feed is truncated, and the way past it is /v1/linkedin/search/posts with `from_member` set to the member's urn (`author.ext.urn` on /v1/linkedin/profile) and no `query`. That endpoint pages with a real `next_cursor` that keeps advancing, and on a prolific member it reaches months further back than this one. It reads a best-effort search index rather than the member's feed, so it is the deeper source only for members this endpoint truncates. **It is not a complete archive**: how deep it goes is a property of the index and varies by member, from a couple of hundred posts to a few hundred, so walk it to find out and do not design around a fixed number. TL;DR: `GET /v1/linkedin/profile/posts` costs 5 credits for a call with no `limit`, or `limit` at 50 or below. Above 50 the call is metered at 2 credits per post RETURNED: it holds `limit x 2` up front (the 100 maximum holds 200) and refunds down to the posts that actually came back, never below 5, so a member with 60 posts settles at 120 credits however high `limit` was set and returns SocialCrawl's unified JSON schema. Single x-api-key auth, 100 free credits on signup. ## Parameters | Parameter | Required | Description | | --- | --- | --- | | `url` | yes | Full URL of the LinkedIn profile, company, or post. | | `limit` | no | How many posts to return in the one call, 1 to 100. Defaults to the upstream's 20. 100 is the provider's hard ceiling. Up to 50 the call is a flat 5 credits; above 50 it is metered at 2 credits per post returned (holds `limit x 2`, never below 5). Ask for the depth you need up front - there is no second page to fetch. | | `urn` | no | The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster and consumes half the upstream rate-limit budget. Verified on the deployed API 05/09/2026. To address a member by URN alone, send the URN-form profile URL as `url`, for example https://www.linkedin.com/in/ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc: it resolves to the same member as the public address (verified 20/10/2026 on profile/posts and profile/comments) and holds only ASCII, which helps when the public address carries an emoji or other symbol. | | `since` | no | Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept. `published_after`, `start_date`, `from_date`, `publish_time` (`yesterday`, `this-week`, `this-month`, `last-3-months`, `last-6-months`) and `max_age_days` are accepted and applied as `since`. | | `until` | no | Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept. `published_before`, `end_date` and `to_date` are accepted and applied as `until`. | ## Code example ```bash curl -G "https://www.socialcrawl.dev/v1/linkedin/profile/posts" \ --data-urlencode "url=https://www.linkedin.com/in/williamhgates/" \ -H "x-api-key: sc_YOUR_API_KEY" ``` ## FAQ ### How do I get a LinkedIn member's own posts with an API? Send a GET request to /v1/linkedin/profile/posts with the member's profile URL in the url parameter. SocialCrawl returns a feed of the posts that member authored, each with text, reaction count, comment count, share count, and media. ### How far back can I read a member's posts? Use limit, which accepts up to 100. Up to 50 it costs the same as the default 20; above 50 the call is metered per post returned. LinkedIn serves this feed as one fixed window with no continuation token, so limit is the depth control and there is no second page: ask for the depth you need up front. If it returns fewer posts than your limit, that is the member's whole history. If it returns exactly 100, there is more, and you reach it with /v1/linkedin/search/posts using from_member set to the member's urn and no query, which pages properly. ### How much does the LinkedIn Profile Posts API cost? A call with limit at 50 or below costs 5 credits, however many posts come back. Above 50 it is metered per post returned, up to 200 credits at limit=100, refunded down to the posts that arrive. New accounts get 100 free credits with no credit card. ### Can I use this for engagement analytics on a person? Yes. Because every post carries its reaction, comment, and share counts, you can compute a member's average engagement, posting cadence, and top content over their recent feed for creator or thought-leadership analytics. ### How is this different from the company posts endpoint? This endpoint returns an individual member's authored posts from their profile URL, while /v1/linkedin/company/posts returns a company page feed. They share the same post shape, but they read differently: the company feed pages with page, and this one is a single window sized with limit. ### Is scraping LinkedIn member posts legal? SocialCrawl reads only public LinkedIn posts any logged-out visitor can see. You remain responsible for complying with LinkedIn's User Agreement and data-protection law (GDPR, CCPA) for your use case. See the full LinkedIn API: https://www.socialcrawl.dev/platforms/linkedin ## Pricing - Standard endpoints: 1 credit per call - Advanced endpoints: 5 credits per call - Premium endpoints: 10 credits per call - 100 free credits on signup, no credit card required. Cached responses cost 0 credits. Credit packs never expire. - Full pricing: https://www.socialcrawl.dev/pricing ## Explore with AI Questions this API answers, phrased for an AI assistant: - How to get a LinkedIn member's own posts with SocialCrawl - How to paginate a LinkedIn profile's post history via API