Back to extractor
THE FIELD MANUAL

A briefing for the brief-curious.

Extract a public LinkedIn post with one GET request. Use the same domain as this page. No client API key is required; the server connects to ScrapingBee.

Robot in a hurry? Read the plain-text agent briefing. Humans may read it too. We don’t check.

Read a post. Discreetly.

GET /api/post?url=ENCODED_LINKEDIN_POST_URL

Pass a full HTTPS post URL from linkedin.com/posts/…, linkedin.com/feed/update/…, or lnkd.in/…. URL-encode the entire link.

const link = 'https://lnkd.in/p/ey3k6ZpB';
const response = await fetch(
  '/api/post?url=' + encodeURIComponent(link)
);
const data = await response.json();
if (!response.ok) throw new Error(data.error.message);
console.log(data.author.name, data.text, data.image_url);

For requests outside the browser, prefix the path with this app’s origin. The extractor’s “Copy API link” button copies the full URL.

What’s in the envelope

FieldWhat you get
urlCanonical LinkedIn post URL.
authorname, profile_url, and image_url; unavailable values are null.
textFull publicly available post text, with line breaks.
published_atPublication time, or null.
like_countTotal reactions, including likes and other reaction types; null if unavailable.
comment_countReported total comment count; null if unavailable.
commentsVisible comments with author, text, like_count, and published_at.
comments_returnedNumber of comment objects returned.
comments_completeTrue only when the returned count matches the reported total.
image_urlFirst original post image URL, or null.
image_urlsAll post images found in the public page.
fetched_atUTC timestamp when the post was extracted.
warningsLimitations affecting the extracted data.

Photographic evidence

GET /api/image?url=ENCODED_LINKEDIN_POST_URL

This endpoint redirects (HTTP 302) to the first original image. It returns 404 if no image is available. For AI vision APIs, pass image_url from the JSON directly. LinkedIn image URLs may expire; fetch the post again for a fresh URL. This is the post’s media, not a screenshot.

When the mission gets awkward

{
  "error": {
    "code": "INVALID_URL",
    "message": "Enter a public LinkedIn post URL."
  }
}
400Missing or unsupported URL.
404No public image (image endpoint only).
422Post unavailable, private, deleted, or blocked by sign-in.
429ScrapingBee credit or concurrency limit.
502ScrapingBee could not load the page within the cost limit.
503Server key or cost configuration needs attention.
504Upstream request timed out.

Availability and caching

LinkedIn often shows only a subset of comments to signed-out visitors. An empty comments array does not mean the post has no comments. Check comment_count, comments_returned, and warnings. No login-only content is accessed.

Successful responses are cached at Vercel’s edge for 15 minutes and in each warm server instance for up to 15 minutes. Fresh requests can take up to two minutes. The default ScrapingBee cost cap is one credit per scrape. Some posts may fail at this limit. This is a public endpoint backed by the owner’s ScrapingBee credits.

Provider details: ScrapingBee documentation.