SFOLN

Catalogue / Social media data

LinkedIn Posts Search Scraper (No Cookies)

sfoln/linkedin-posts-search · Lead generation, Social media, Automation On request

Search public LinkedIn posts and articles by keyword with no account or cookies: text, date, author name, headline and followers, likes, comments, media type and hashtags, one JSON record per post. $0.80 per 1,000 posts + $0.004 per results page. Optional date window.

About

What it does

LinkedIn Posts Search Scraper (No Cookies) searches public LinkedIn posts and Pulse articles by keyword and returns one normalized record per post: post URL and activity ID, text, posting date, the author's name, profile URL, headline and follower count, like and comment counts, media type (article, document, video, image, text), image URLs and hashtags. It's built for B2B social listening, thought-leader and competitor research, lead discovery, content research and AI agents.

Price

Price per delivered record

EventPricePer 1,000Charged for
LinkedIn post
linkedin-post
$0.0008$0.80 / 1,000Charged once per LinkedIn post delivered as a dataset record. Query summary records are never charged.
LinkedIn search page
linkedin-posts-query
$0.004$4 / 1,000Charged once per page of search results that delivered at least one new post. Covers the per-request upstream fee. Also charged for an empty page the upstream billed (when the budget covers it).

Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.

Run

Call it from code, an agent or the Console

This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com

curl · synchronous run, rows in the response
curl -X POST "https://api.apify.com/v2/actors/sfoln~linkedin-posts-search/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["ai agents"],"maxPostsPerQuery":10}'
mcp.json · hosted Apify MCP server
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/linkedin-posts-search"
    }
  }
}
asynchronous run · for large batches
POST https://api.apify.com/v2/actors/sfoln~linkedin-posts-search/runs?maxTotalChargeUsd=1
GET  https://api.apify.com/v2/actor-runs/{runId}            # until status is SUCCEEDED
GET  https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json

Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Find 20 public LinkedIn posts about "AI agents" from the past week and summarize the main themes and the most engaged authors.

Input

Input fields

Enter keywords. Each keyword produces one dataset record per post plus one summary record per keyword.

FieldTypeDefaultMeaning
keywords *arrayrequiredKeywords
Search terms, one per line. Duplicates are removed. Accounts on the Apify free plan can process up to 10 keywords per run.
maxPostsPerQueryinteger20Max posts per keyword
How many posts to return per keyword (1–200). Each delivered post is one charged event, plus one page event per results page. The upstream exposes at most 11 pages per keyword. Range 1–200.
datePostedstring—Date posted
Only return posts that Google indexed within this window. Leave empty for any time. One of "last-hour", "last-day", "last-week", "last-month", "last-year".
maxQueriesinteger100Max keywords
Safety cap on the number of keywords processed in this run. Range 1–1000.
concurrencyinteger4Concurrency
How many keywords are fetched in parallel (1–8). Range 1–8.
itemTimeoutSecsinteger600Time limit per input (seconds)
Pagination for one keyword stops cleanly shortly before this limit (60–3600). Raise it for very large per-input limits. Range 60–3600.
includeRawbooleanfalseInclude raw upstream response
Attach the unmodified provider object to each result record.
Example input
{
  "keywords": [
    "ai agents"
  ],
  "maxPostsPerQuery": 10
}

Output

One record per input item

Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.

FieldTypeMeaning
inputstring | objectInput
The keyword as provided.
recordTypestringRecord type
post (one per delivered post, charged) | query (one summary per keyword, never charged) e.g. "post"
positionintegerPosition
1-based position of the post within its input
querystring | nullKeyword
datePostedstring | nullDate filter
Summary records only.
postUrlstring | nullPost URL
postIdstring | nullActivity ID
textstring | nullText
postedAtstring | nullPosted at
ISO 8601 UTC
authorNamestring | nullAuthor name
authorUrlstring | nullAuthor URL
authorHeadlinestring | nullAuthor headline
authorFollowersnumber | nullAuthor followers
likesnumber | nullLikes
commentsnumber | nullComments
repostsnumber | nullReposts
mediaTypestring | nullMedia type
article | document | video | image | text (inferred)
imageUrlsarrayImage URLs
hashtagsarrayHashtags
rowsDeliveredintegerPosts delivered
Summary records only.
pagesFetchedintegerPages fetched
Summary records only.
pagesChargedintegerPages charged
Summary records only.
reachedEndbooleanReached end
Summary records only: the upstream reported no further pages.
stopReasonstringStop reason
Summary records only: limit | end | budget | max_pages | deadline | empty_pages | error
statusstringStatus
ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"
chargedbooleanCharged
chargedEventstringCharged event
errorobjectError
warningsarrayWarnings
sourcestringSource
fetchedAtstringFetched at
Example record
{
  "input": "ai agents",
  "recordType": "post",
  "position": 1,
  "query": "ai agents",
  "postUrl": "https://www.linkedin.com/posts/aagupta_what-you-need-to-know-ai-agents-activity-7354600338621906944-RvXR",
  "postId": "7354600338621906944",
  "text": "There's way too much hype about AI agents.\n\nHere's your simple guide: …",
  "postedAt": "2025-07-25T19:56:02.566Z",
  "authorName": "Aakash Gupta",
  "authorUrl": "https://www.linkedin.com/in/aagupta",
  "authorHeadline": null,
  "authorFollowers": 313422,
  "likes": 217,
  "comments": 25,
  "reposts": null,
  "mediaType": "document",
  "imageUrls": [
    "https://media.licdn.com/dms/image/v2/D4E1FAQHAzpgC7eaKgw/feedshare-document-images_160/…"
  ],
  "hashtags": [],
  "status": "ok",
  "charged": true,
  "chargedEvent": "linkedin-post",
  "source": "scrapecreators",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}

Machine-readable

This page for agents