Docs / Search
search_posts
Search posts by words, date and who wrote or is mentioned in them, by name.
This action only reads. It changes nothing, so it is safe to try.
What you give it
| Input | What it is | Where to get it |
|---|---|---|
keywordsoptional | Text, up to 300 characters. Words to search for in posts, e.g. "cold email deliverability". LinkedIn search operators work ("exact phrase", AND, OR, NOT). | You write it. |
sortByoptional | One of: relevance, date. "relevance" (LinkedIn's default) or "date" (newest first). | You write it. |
datePostedoptional | One of: past_day, past_week, past_month. Only posts from the past day, week or month. | You write it. |
contentTypeoptional | One of: videos, images, live_videos, collaborative_articles, documents, jobs. Only posts with this kind of content. | You write it. |
authorKeywordsoptional | Text, up to 100 characters. Words in the AUTHOR's headline / title, e.g. "founder" or "head of sales". | You write it. |
authorIndustriesoptional | A list (text), up to 10. Industry names the author works in, e.g. ["Software Development"]. | You write it. |
authorCompaniesoptional | A list (text), up to 10. Company names — posts written by PEOPLE who work at these companies. | You write it. |
fromCompaniesoptional | A list (text), up to 10. Company names — posts published by these COMPANY PAGES themselves. | You write it. |
mentioningCompaniesoptional | A list (text), up to 10. Company names — posts that @mention these companies (e.g. a competitor). | You write it. |
postedByoptional | One of: me, first_connections, people_you_follow. Only posts by you ("me"), by your 1st-degree connections, or by people you follow. Runs on your own LinkedIn sender, so one must be connected. | You write it. |
limitoptional | A number, 1 to 50. Max posts to return (1–50, default 10). | You write it. |
cursoroptional | A cursor. nextCursor from the previous call, to get the next page. Keep every other argument the same. | The nextCursor from the last answer of search_posts. |
connectionIdoptional | A connection id. Which of your LinkedIn senders to search through (its id from list_linkedin_accounts). Omit to use your first live sender, or the shared account when you have none. | Run list_linkedin_accounts and use accounts[].id from its answer.15 more places to get it
|
Call it
curl -X POST https://api.heyreagent.com/v1/actions/search_posts \
-H "Authorization: Bearer YOUR_KEY" \
-H "content-type: application/json" \
-d '{"keywords":"outbound sales"}'The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/search_posts", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_KEY",
"content-type": "application/json",
},
body: JSON.stringify({
"keywords": "outbound sales"
}),
});
const answer = await response.json();
console.log(answer);The same call in Python
import requests
response = requests.post(
"https://api.heyreagent.com/v1/actions/search_posts",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"keywords": "outbound sales",
},
)
print(response.json())The same call in n8n
Add an HTTP Request node and fill it in like this:
| Method | POST |
| URL | https://api.heyreagent.com/v1/actions/search_posts |
| Send Headers | On. Name Authorization, Value Bearer YOUR_KEY |
| Send Body | On. Body Content Type JSON, Specify Body Using JSON, then paste the body below |
{
"keywords": "outbound sales"
}Put your own key where it says YOUR_KEY. New here? Start with your first call.
What you get back
When it worked, the answer is { "ok": true, "result": { … } }. Inside result:
returned | |
hasMore | |
nextCursor | A cursor. Other actions take it. |
applied | |
posts | |
note |
A field that does not apply to an answer is left out, or is null.
When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.
Good to know
- Company and industry filters are NAMES here; the action looks the ids up itself and takes the top match. search_linkedin_posts takes the ids.
- When author.isCompany is true, author.profileUrl is a company link, which actions asking for a profile link do not take.
- nextCursor names the account that ran the search: it is refused by any other action, and by this one once that account is gone.
In Claude or ChatGPT
Once connected, ask in your own words. The assistant sees this action as a tool with the same name, search_posts, and the same inputs.