Skip Selenium, cookies and proxy pools. From Python, send one POST with requests to the RouterGrowth run endpoint with the capability social.search, platform linkedin and your keyword, then read the posts from the JSON result: text, author, date, likes and comments. The script holds an API key, nothing else.
Ask your agent
Write a Python script that searches LinkedIn for three keywords every morning and appends new posts to a CSV.
Connect RouterGrowth once, then ask in plain words. New workspaces start with $1 of credit. Get a key or read the setup guide.
A real run
One call to social.search (social post search), run through RouterGrowth on October 19, 2026. These are the first rows it returned; fields that name a person are masked.
| text | author | created_at | likes | replies |
|---|---|---|---|---|
| Most cold email deliverability problems are not copywriting problems. They are infrastructure problems. Your DNS configuration sends signal… | Ma*** | 2026-10-07 | 20 | 21 |
| In 2026, deliverability has been tougher than ever. What's your average reply rate on cold email right now? | An*** | 2026-10-01 | 6 | 5 |
| Most cold email has an offer problem. Not a personalization problem. If the offer is good enough, you don’t need a brand. You don’t need to… | Jo*** | 2026-10-15 | 53 | 23 |
Six public LinkedIn posts for "cold email deliverability" from the past three weeks, each with likes and a comment count.
Step by step
Put your RouterGrowth key in an environment variable such as ROUTERGROWTH_API_KEY and send it as a Bearer token.
Send capability social.search with input platform, query and limit to https://api.routergrowth.com/v1/run, with a max_cost in routing.
The response JSON holds the run id, the billing block and result.posts, a list of dicts ready for a loop.
Use the csv module or pandas to save text, author, created_at and the engagement counts.
Price
List prices on LinkedIn, read from the catalog when this page was built. The exact figure is quoted before every run, and a monthly plan lowers it.
In practice
You describe the job; the agent picks the calls, shows the price and runs them.
Write a Python script that searches LinkedIn for three keywords every morning and appends new posts to a CSV.
Search LinkedIn for 'cold email deliverability' and pull the comments under the post with the most replies.
Connect
One MCP server for Claude, ChatGPT, Claude Code, Codex and Cursor, or the same call over the CLI and REST with the input above.
claude mcp add --transport http routergrowth https://api.routergrowth.com/mcp
npm install -g routergrowth && routergrowth setup
routergrowth run -c social.search -i '{"platform": "linkedin", "query": "cold email deliverability", "limit": 6}'curl -X POST https://api.routergrowth.com/v1/run \
-H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
-d '{"capability": "social.search", "input": {"platform": "linkedin", "query": "cold email deliverability", "limit": 6}}'Worth knowing
The script makes an HTTP call and parses JSON. No driver, headless Chrome or proxy settings to keep in sync.
A run can return when it finishes, or hand back a run id to poll at /v1/runs/<id> while your script does other work.
The key in your script is the key the CLI and the MCP server use, and every run lands in one history.
FAQ
No. A plain HTTP client such as requests or httpx is enough; the scraping happens on RouterGrowth's providers.
With an Authorization header holding Bearer and your RouterGrowth API key.
A run record: run_id, status, billing with the quote and the charge, timing, and result.posts with one dict per post.
Yes. Cron, a GitHub Action or any job runner can call the endpoint; each call is billed per post returned.
More on LinkedIn
Reading this as an agent? This page as markdown: /tools/linkedin/scrape-python.md
Connect your agent once. The first calls run on the $1 that comes with signup.