curl -X POST https://api.up2data.ai/v1/search/posts \
-H "X-API-Key: $UP2DATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["migrating off Salesforce"],
"sort": "recent",
"max_results": 25
}'
resp = requests.post(
"https://api.up2data.ai/v1/search/posts",
headers={"X-API-Key": UP2DATA_API_KEY},
json={"keywords": ["migrating off Salesforce"], "sort": "recent", "max_results": 25},
)
posts = resp.json()["data"]["posts"]
const resp = await fetch("https://api.up2data.ai/v1/search/posts", {
method: "POST",
headers: { "X-API-Key": process.env.UP2DATA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ keywords: ["migrating off Salesforce"], sort: "recent", max_results: 25 }),
});
const { posts } = (await resp.json()).data;
body, _ := json.Marshal(map[string]any{
"keywords": []string{"migrating off Salesforce"}, "sort": "recent", "max_results": 25,
})
req, _ := http.NewRequest("POST",
"https://api.up2data.ai/v1/search/posts", bytes.NewReader(body))
req.Header.Set("X-API-Key", os.Getenv("UP2DATA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
{
"data": {
"posts": [
{
"url": "https://linkedin.com/posts/example_activity-7215",
"urn": "7267273010393358336",
"share_urn": "7315779815297421316",
"author": {
"name": "Jane Doe",
"url": "https://linkedin.com/in/janedoe",
"headline": "VP RevOps at Example"
},
"text": "Six months after migrating off Salesforce, here's what we learned…",
"posted_at": "2026-07-06T18:45:00Z",
"reactions_count": 483,
"comments_count": 67,
"reposts_count": 21,
"media": [],
"scraped_at": "2026-07-08T12:00:00Z"
}
],
"pagination": { "returned": 25, "max_results": 25, "pages_scraped": 1, "has_more": true }
},
"meta": {
"creditsUsed": 1,
"creditsRemaining": 98385,
"billed": true,
"reason": "page_returned",
"requestId": "req_m20d8vhh",
"latencyMs": 4700
}
}
Search
Search posts
What the market is talking about, as it happens.
POST
/
v1
/
search
/
posts
curl -X POST https://api.up2data.ai/v1/search/posts \
-H "X-API-Key: $UP2DATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["migrating off Salesforce"],
"sort": "recent",
"max_results": 25
}'
resp = requests.post(
"https://api.up2data.ai/v1/search/posts",
headers={"X-API-Key": UP2DATA_API_KEY},
json={"keywords": ["migrating off Salesforce"], "sort": "recent", "max_results": 25},
)
posts = resp.json()["data"]["posts"]
const resp = await fetch("https://api.up2data.ai/v1/search/posts", {
method: "POST",
headers: { "X-API-Key": process.env.UP2DATA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ keywords: ["migrating off Salesforce"], sort: "recent", max_results: 25 }),
});
const { posts } = (await resp.json()).data;
body, _ := json.Marshal(map[string]any{
"keywords": []string{"migrating off Salesforce"}, "sort": "recent", "max_results": 25,
})
req, _ := http.NewRequest("POST",
"https://api.up2data.ai/v1/search/posts", bytes.NewReader(body))
req.Header.Set("X-API-Key", os.Getenv("UP2DATA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
{
"data": {
"posts": [
{
"url": "https://linkedin.com/posts/example_activity-7215",
"urn": "7267273010393358336",
"share_urn": "7315779815297421316",
"author": {
"name": "Jane Doe",
"url": "https://linkedin.com/in/janedoe",
"headline": "VP RevOps at Example"
},
"text": "Six months after migrating off Salesforce, here's what we learned…",
"posted_at": "2026-07-06T18:45:00Z",
"reactions_count": 483,
"comments_count": 67,
"reposts_count": 21,
"media": [],
"scraped_at": "2026-07-08T12:00:00Z"
}
],
"pagination": { "returned": 25, "max_results": 25, "pages_scraped": 1, "has_more": true }
},
"meta": {
"creditsUsed": 1,
"creditsRemaining": 98385,
"billed": true,
"reason": "page_returned",
"requestId": "req_m20d8vhh",
"latencyMs": 4700
}
}
Cost: 1 credit per page scraped (up to 25 posts per page) · zero-result pages free
Live post search by keyword, hashtag, or author feed — with engagement metrics.
Rate limit: counts as 1 request against your tier limit.
How to search — provide at least one
keywords— match on post body.hashtags— without the#(e.g.["hiring", "b2bsales"]).author_url/author_urn— pull a specific person’s or company’s recent posts.
max_results and Up2Data paginates internally.string[]
Match on post body. Provide at least one of
keywords, hashtags, author_url.string[]
Without the
# (e.g. ["hiring", "b2bsales"]).string
Pull a specific person’s or company’s recent posts.
string
Author member URN — faster than URL when available.
string
default:"all"
24h | week | month | all.string
default:"recent"
recent | top | relevance.integer
default:"25"
1–100. Target number of posts to return. Up2Data paginates internally.
Response
object[]
curl -X POST https://api.up2data.ai/v1/search/posts \
-H "X-API-Key: $UP2DATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["migrating off Salesforce"],
"sort": "recent",
"max_results": 25
}'
resp = requests.post(
"https://api.up2data.ai/v1/search/posts",
headers={"X-API-Key": UP2DATA_API_KEY},
json={"keywords": ["migrating off Salesforce"], "sort": "recent", "max_results": 25},
)
posts = resp.json()["data"]["posts"]
const resp = await fetch("https://api.up2data.ai/v1/search/posts", {
method: "POST",
headers: { "X-API-Key": process.env.UP2DATA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ keywords: ["migrating off Salesforce"], sort: "recent", max_results: 25 }),
});
const { posts } = (await resp.json()).data;
body, _ := json.Marshal(map[string]any{
"keywords": []string{"migrating off Salesforce"}, "sort": "recent", "max_results": 25,
})
req, _ := http.NewRequest("POST",
"https://api.up2data.ai/v1/search/posts", bytes.NewReader(body))
req.Header.Set("X-API-Key", os.Getenv("UP2DATA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
{
"data": {
"posts": [
{
"url": "https://linkedin.com/posts/example_activity-7215",
"urn": "7267273010393358336",
"share_urn": "7315779815297421316",
"author": {
"name": "Jane Doe",
"url": "https://linkedin.com/in/janedoe",
"headline": "VP RevOps at Example"
},
"text": "Six months after migrating off Salesforce, here's what we learned…",
"posted_at": "2026-07-06T18:45:00Z",
"reactions_count": 483,
"comments_count": 67,
"reposts_count": 21,
"media": [],
"scraped_at": "2026-07-08T12:00:00Z"
}
],
"pagination": { "returned": 25, "max_results": 25, "pages_scraped": 1, "has_more": true }
},
"meta": {
"creditsUsed": 1,
"creditsRemaining": 98385,
"billed": true,
"reason": "page_returned",
"requestId": "req_m20d8vhh",
"latencyMs": 4700
}
}