This tutorial shows how to scrape LinkedIn posts after login with the LinkedIn Posts Scraper Login Required template for UScraper. You will prepare approved LinkedIn URLs, complete sign-in manually, run the local workflow, export a CSV, and validate the rows.
Before you start
Prerequisites and scope
You need UScraper installed as a local desktop app, the LinkedIn Posts Scraper Login Required template, a LinkedIn account you are allowed to use, and one or more approved LinkedIn content search or organization posts URLs.
This tutorial covers visible post cards from a signed-in browser session. It does not cover private inboxes, account dashboards, CAPTCHA solving, MFA automation, hidden APIs, bulk profile scraping, or automatic login.
Technical access is not permission. Treat this as a research workflow, keep runs modest, document the purpose of collection, and review LinkedIn's User Agreement, robots directives, privacy obligations, and local law before commercial reuse.
API or scraper
LinkedIn Posts API vs scraper workflow
Searches such as linkedin posts api alternative, scrape LinkedIn posts Python, and best LinkedIn post scraper usually mix three different needs: sanctioned API publishing or retrieval, engineering-owned browser automation, and analyst-led CSV export.
The official LinkedIn Posts API and OAuth authorization flow are the right path when you have approved app access. Python can make sense when engineers own sessions, waits, selectors, retries, and storage. UScraper is for a narrower job: a human-supervised browser workflow that exports rendered LinkedIn posts to a local CSV without custom scraper code.
| Approach | Best fit | Main trade-off |
|---|---|---|
| Official LinkedIn API | Approved integrations and app workflows | Requires eligible access, OAuth setup, and permitted use. |
| Python or Playwright scraper | Engineering-owned pipelines and custom storage | More control, but more maintenance and compliance review. |
| Hosted scraping tools | Cloud scheduling, queues, and API delivery | Data custody, pricing unit, and account governance depend on the vendor. |
| UScraper template | Local CSV from approved post-search or organization URLs | Visible and inspectable, but still affected by login state and layout changes. |
Workflow anatomy
What the LinkedIn posts scraper does
The JSON export is the authoritative workflow definition. In plain English, the flow is:
Set Window Size -> Navigate -> Wait for Page Load
-> Wait for post cards -> Scroll the feed -> Sleep
-> Wait again -> Structured Export -> Loop Continue
The Navigate block can hold multiple input URLs. For each URL, the workflow waits for LinkedIn post containers, runs a controlled scroll loop, then exports loaded rows before continuing. The scroll step is capped at 25 passes and stops early when page height stays stable.
{
"fileName": "linkedin-posts-scraper.csv",
"fileMode": "append",
"rowSelector": "div.feed-shared-update-v2, div[data-urn*='urn:li:activity']",
"scroll": {
"maxScrolls": 25,
"stableRounds": 3
},
"columns": [
"name",
"follower_number",
"posted",
"post_content",
"comment",
"repost",
"reaction"
]
}
Append mode lets search URLs and organization pages land in one batch. It can also mix test rows with production rows, so use a dated folder or clear the file before reruns.
Keep each LinkedIn URL focused: one keyword search, one company posts page, or one organization feed. Narrow URLs are easier to audit than one broad search that produces mixed topics.
Runbook
How to scrape LinkedIn posts to CSV
Import the template
Open LinkedIn Posts Scraper Login Required, download the workflow JSON, and import it into UScraper.
Prepare LinkedIn access
Sign in manually, complete verification if prompted, and confirm one target feed renders.
Replace Navigate URLs
Add approved content search, company, school, or organization posts URLs. Track the source and business purpose for each URL.
Set the export folder
In Structured Export, confirm linkedin-posts-scraper.csv, headers, append mode, and a local save folder that belongs to this project.
Run one URL and inspect
Start with one source URL, open the CSV, and compare several rows against the browser before adding more URLs or increasing collection depth.
Output
What the LinkedIn posts CSV contains
The bundle does not include a CSV sample, so treat the rows below as illustrative. The actual export depends on your account access, feed language, search filters, and LinkedIn's current card layout.
linkedin-posts-scraper.csvColumn
name
Poster, company, school, or organization name from the visible post card.
Column
follower_number
Follower text when LinkedIn exposes it near the actor description.
Column
posted
Relative post timing such as 3h, 2d, or 1w when visible.
Column
post_content
Main post copy captured from the rendered feed card.
Column
comment
Visible comment count label when present.
Column
repost
Visible repost count label when present.
Column
reaction
Reaction count or reaction label parsed from the engagement area.
Sample rows
2 of many
| name | follower_number | posted | post_content | comment | repost | reaction |
|---|---|---|---|---|---|---|
| Data Growth Weekly | 18,420 followers | 2d | Three lessons from our latest B2B benchmark report. | 12 comments | 4 reposts | 186 |
| Northstar Analytics | 42,000 followers | 3h | New webinar: using public post data for competitive research. | 5 comments | 1 repost | 57 |
After the first run, look for duplicate rows, empty post text, impossible reaction counts, and rows outside your target topic. If names and counts are blank but post text exists, LinkedIn may be serving a different card variant. If the file has zero rows, the feed likely did not render, a prompt blocked the page, or the row selector no longer matches.
Validation
Common issues and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Zero rows exported | Login, verification, or consent prompt blocked the feed | Complete the prompt manually, rerun one URL, and watch the browser. |
Blank post_content | LinkedIn served a different card layout | Inspect one visible card and update the content selector before scaling. |
| Missing reactions or reposts | Engagement labels are hidden, collapsed, localized, or absent | Treat counts as optional and validate against visible cards. |
| Duplicate rows | The same URL was rerun with append mode or the feed repeated cards | Clear test rows, use dated folders, and dedupe before analysis. |
| Early stop | Feed height stabilized before more posts loaded | Narrow the search, verify access, then adjust scroll settings only if needed. |
For recurring research, store the run date, source URLs, account role, filters, language, and selector edits next to the exported CSV.
FAQ
LinkedIn posts scraper FAQ
LinkedIn posts can be visible in a signed-in browser, but automated collection may still be limited by LinkedIn's User Agreement, service terms, robots directives, privacy law, copyright, database rights, account rules, and local regulations. Avoid bypassing authwalls, CAPTCHA, MFA, rate limits, or technical controls, and get legal review before commercial reuse.
Next step
Download the LinkedIn posts scraper template
Download the JSON from LinkedIn Posts Scraper Login Required, import it into UScraper, and run one approved URL before scaling your LinkedIn posts to CSV workflow. For adjacent workflows, browse the UScraper template library or the UScraper blog for more scraping tutorials.

