{"endpoint":{"id":"treg.linkedin.user.posts","provider":"treg","provider_display":"treg","name":"linkedin.user.posts — routed: best of 2 providers, own keys first","summary":"List a LinkedIn member's recent posts from a profile URL or handle — treg picks the provider and names the one that served","method":"POST","path":"/linkedin.user.posts","scope":"","tier":"core","kind":"routed","domain":"user","call_template":"treg call treg.linkedin.user.posts --method POST --data '{\"linkedin_handle\":\"…\"}'","cost":{"type":"per_success","value":0.0015,"currency":"USD","per":1,"unit":"call","source":"inferred","confidence":"documented","checked":null,"varies":true,"note":"NOT free: misses are billed too. the children's range $0.0015–$0.004 per hit, 0% markup; you pay the child that served AND every child tried before it that bills a miss (2 of 2 do), up to X-Treg-Route-Max-Cost (default $1 a call). X-Treg-Route-Exclude them, or X-Treg-Route-Waterfall: 0, to pay for one provider only","usd":0.0015},"async":null,"platform_eligible":true,"platform_blocked":null,"miss":{"status":200,"means":"output.posts == []"},"status":null,"status_note":null,"superseded_by":null,"verified":null,"added":null,"docs_url":"","has_example":false,"input":{"bodyType":"json","body":{"linkedin_url":{"type":"url","required":false,"note":"identity key (part of linkedin_url)"},"linkedin_handle":{"type":"str","required":false,"note":"identity key (part of linkedin_handle)"},"limit":{"type":"int","required":false,"note":"filter — default 10; posts per page where the provider takes a count"}},"note":"Send everything you know about the subject — treg derives the rest (full_name ⇄ first+last), matches each provider on the variants it accepts ({linkedin_url} | {linkedin_handle}) and sends each provider only the fields it wants. On a miss treg keeps trying providers, cheapest first, within X-Treg-Route-Max-Cost (default $1 per call; misses on per-success providers are free). Options ride as headers, never in the body: X-Treg-Route-Waterfall: 0 (stop at the first miss), X-Treg-Route-Max-Cost: <usd>, X-Treg-Route-Prefer / X-Treg-Route-Exclude: <provider>. The response is {output, raw, _treg: {served_by, tried}}; X-Treg-Served-By names the child."},"test_request":{"body":{"linkedin_handle":"…"}},"routed_children":["fetchinio.linkedin.user.posts","harvestapi.linkedin.user.posts"],"capability":"linkedin.user.posts","capability_description":"List a member's recent posts","platform":"linkedin","platform_label":"LinkedIn","observed":{"samples":59708,"decided":59705,"ok_rate":0.9516,"p50_ms":null,"p95_ms":null,"last_ok_days":0,"hit_rate":null,"hit_samples":0}},"provider":{"service":"treg","display_name":"treg"},"siblings":[{"id":"crawl4ai.linkedin.user.posts","provider":"crawl4ai","provider_display":"Crawl4AI","name":"Posts of a LinkedIn member","summary":"The posts of one LinkedIn member, newest first, one row per post: link, text (500 chars), time, likes (all reactions), comments, reposts, kind (post, repost or article) and one media link. `profile` = the public identifier (williamhgates) or the linkedin.com/in/ URL; `limit` up to 50. `session` (your `li_at` and `JSESSIONID` cookies, from the Crawl4AI Session extension) is optional, used for this run only and never stored. Without it you get the member's recent public posts and reposts (about 10), without repost counts and media; LinkedIn's internal id (ACoAA…) needs a session. Columns: url, text, posted_at, likes, comments, reposts, kind, media.","method":"POST","path":"/recipes/linkedin-profile-posts","scope":"any_account","tier":"core","kind":"data","domain":"user","call_template":"treg call crawl4ai.linkedin.user.posts --method POST --data '{\"profile\":\"williamhgates\"}'","cost":{"type":"per_success","value":0.9,"currency":"credit","per":1,"unit":"call","source":"observed","source_url":"https://api.crawl4ai.com/recipes","checked":"2026-10-12","confidence":"verified","note":"treg's account price: 0.9 credits a call whatever pages the run fetched, second-source records included; a reply with no rows, a refused input and a failed run are free. The x-c4-cost header settles the actual charge.","usd":0.0009},"async":null,"platform_eligible":true,"platform_blocked":null,"miss":null,"status":null,"status_note":null,"superseded_by":null,"verified":"2026-10-11","added":"2026-10-11","docs_url":"https://crawl4ai.com/llms.txt","has_example":true,"input":{"bodyType":"json","body":{"limit":{"type":"integer","required":false,"note":"default 10","example":10},"profile":{"type":"string","required":true,"example":"williamhgates"}}},"body_allowlist":true,"test_request":{"body":{"profile":"williamhgates"}},"observed":{"samples":4078,"decided":3598,"ok_rate":0.831,"p50_ms":31394,"p95_ms":83947,"last_ok_days":0,"hit_rate":0.4595,"hit_samples":2990}},{"id":"fetchinio.linkedin.user.posts","provider":"fetchinio","provider_display":"Fetchin","name":"LinkedIn posts by member URL, slug or URN","summary":"Fetch posts from a professional profile with engagement metrics.","method":"GET","path":"/api/v1/posts","scope":"any_account","tier":"core","kind":"data","domain":"content","call_template":"treg call fetchinio.linkedin.user.posts --query profileUrlOrUrn=satyanadella --query count=1","cost":{"type":"per_call","value":0.0015,"currency":"USD","per":1,"unit":"call","source":"observed","source_url":"https://fetchin.io/pricing/credits","checked":"2026-09-24","confidence":"verified","note":"One credit per successful call. Fetchin also bills one credit for a 404; without provider-reported charge evidence treg releases rejected responses and absorbs that upstream cost.","usd":0.0015},"async":null,"platform_eligible":true,"platform_blocked":null,"miss":{"status":404,"means":"The professional profile was not found; Fetchin bills one credit for this result."},"status":null,"status_note":null,"superseded_by":null,"verified":"2026-09-24","added":"2026-09-24","docs_url":"https://docs.fetchin.io/api-reference/endpoint/get-posts","has_example":true,"input":{"queryParams":{"profileUrlOrUrn":{"type":"string","required":true,"example":"satyanadella","note":"Profile URL, public identifier or profile URN."},"count":{"type":"integer","required":false,"default":10,"min":1,"max":50},"paginationToken":{"type":"string","required":false,"note":"Pass the token from the previous response unchanged."}},"note":"Cursor-paginated. Keep paging while hasMore is true. The deprecated start offset is intentionally excluded because this endpoint rejects non-zero offsets."},"strict_query":true,"test_request":{"queryParams":{"profileUrlOrUrn":"satyanadella","count":1}},"observed":{"samples":162027,"decided":144281,"ok_rate":0.9995,"p50_ms":1937,"p95_ms":3486,"last_ok_days":0,"hit_rate":0.828,"hit_samples":144444},"reviews":{"teams":10,"samples":[{"usefulness":"useful","reason":"Returned 14 recent Jason Zhou LinkedIn posts with full text, dates, and engagement for a clean summary.","client":"mcp","month":"2026-10"},{"usefulness":"useful","reason":"Returned 41 dated public posts with full text, engagement, and a pagination token, enough to compare an older SEO voice with the recent storytelling voice.","client":"mcp","month":"2026-10"},{"usefulness":"useful","reason":"Cursor pagination returned usable public post text, source links, timestamps, and counters for a complete requested date-window traversal.","client":"cli","month":"2026-10"}],"share":{"useful":0.81,"partly":0.12,"not_useful":0.07}}},{"id":"harvestapi.linkedin.user.posts","provider":"harvestapi","provider_display":"HarvestAPI","name":"Get a member’s LinkedIn posts","summary":"Get LinkedIn profile posts by profile URL, ID, or public identifier.","method":"GET","path":"/linkedin/profile-posts","scope":"any_account","tier":"core","kind":"data","domain":"social","call_template":"treg call harvestapi.linkedin.user.posts --query profilePublicIdentifier=williamhgates --query page=1","cost":{"type":"per_call","value":0.004,"currency":"USD","per":1,"unit":"call","source":"observed","source_url":"https://docs.harvestapi.io","checked":"2026-09-10","confidence":"verified","note":"Observed on treg’s prepaid Harvest account. Final platform cost follows the response cost, including billed misses and explicit zero. BYOK never charges the treg balance.","reported_charge":{"path":"cost","unit":"usd"},"usd":0.004},"async":null,"platform_eligible":true,"platform_blocked":null,"miss":null,"status":null,"status_note":null,"superseded_by":null,"verified":"2026-09-10","added":"2026-09-14","docs_url":"https://docs.harvestapi.io/linkedin-api-reference/openapi.json","has_example":true,"input":{"queryParams":{"profile":{"type":"string","required":false,"note":"Filter posts by author's profile URL"},"profileId":{"type":"string","required":false,"note":"Filter posts by author's profile ID. It's faster to search by ID"},"profilePublicIdentifier":{"type":"string","required":false,"note":"Filter posts by author's profile public identifier (last part in the URL).","example":"williamhgates"},"postedLimit":{"type":"string","required":false,"note":"Filter posts by maximum posted date. Supported values: '24h', 'week', 'month'. \nSince LinkedIn doesn't offer a way to filter by date, the filtering will be done on our side, due to that the pagination might have incorrect values, because pagination is returned by LinkedIn without applying the postedLimit filter"},"scrapePostedLimit":{"type":"string","required":false,"note":"Post-Filter posts by maximum posted date. Supported values: '1h', '24h', 'week','month', '3months', '6months', 'year'. This parameter will be applied after receiving results from LinkedIn, the filtering will be done on our side"},"page":{"type":"integer","required":false,"note":"Page number for pagination","example":1},"paginationToken":{"type":"string","required":false,"note":"Required if it was returned by the previous page. Otherwise the page will always be 1 (on LinkedIn side). Doesn't apply for all queries, usually profile posts return this token"}},"note":"Use only the declared query parameters, once each, without a request body. Results are provider-native: inspect element/elements and body status/error; HTTP 200 alone does not prove a hit. Empty results can still be charged. totalElements/totalPages may be zero even with results; follow paginationToken rather than assuming no data."},"strict_query":true,"test_request":{"queryParams":{"profilePublicIdentifier":"williamhgates","page":1}},"observed":{"samples":65934,"decided":64934,"ok_rate":0.9998,"p50_ms":2296,"p95_ms":5680,"last_ok_days":0,"hit_rate":0.7579,"hit_samples":54674},"reviews":{"teams":10,"samples":[{"usefulness":"useful","reason":"Returned full post text, media references and public engagement counts; cursor allowed an annual analysis.","client":"cli","month":"2026-10"},{"usefulness":"useful","reason":"Returned 49 dated LinkedIn posts and reposts with full text, author metadata, and direct post URLs for lilia-j-severina.","client":"mcp","month":"2026-10"},{"usefulness":"useful","reason":"Full post history with dates; few original posts but job-post links revealed the ATS platform and themes.","client":"mcp","month":"2026-10"}],"share":{"useful":0.9,"partly":0.1,"not_useful":0.0}}},{"id":"justoneapi.x.linkedin-get-user-posts-v1","provider":"justoneapi","provider_display":"Just One API","name":"LinkedIn user posts by user URN","summary":"Retrieves posts published by a LinkedIn user URN with page and pagination-token support.","method":"GET","path":"/api/linkedin/get-user-posts/v1","scope":"","tier":"extended","kind":"data","domain":"user","call_template":"treg call justoneapi.x.linkedin-get-user-posts-v1 --query urn=ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc --query page=1","cost":{"type":"per_success","value":0.2,"currency":"CNY","per":1,"unit":"call","source":"rate_card_api","source_url":"https://www.justoneapi.com/","checked":"2026-07-28","confidence":"documented","note":"billed only on success (code 0); errors free","usd":0.02952},"async":null,"platform_eligible":true,"platform_blocked":null,"miss":null,"status":null,"status_note":null,"superseded_by":null,"verified":"2026-07-28","added":"2026-07-28","docs_url":"https://docs.justoneapi.com/en/api/linkedin/user-published-posts-v1","has_example":true,"input":{"queryParams":{"urn":{"type":"string","required":true,"note":"LinkedIn user URN returned by the User Profile endpoint."},"page":{"type":"integer","required":false,"note":"Page number, starting from 1.","example":1},"paginationToken":{"type":"string","required":false,"note":"Pagination token returned by a previous response.","example":""}}},"test_request":{"queryParams":{"urn":"ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc","page":"1"}},"observed":{"samples":1,"decided":0,"ok_rate":null,"p50_ms":null,"p95_ms":null,"last_ok_days":null,"hit_rate":null,"hit_samples":0}},{"id":"tikhub.x.linkedin-web-v2-get-user-posts","provider":"tikhub","provider_display":"TikHub","name":"LinkedIn person's posts by profile URL or slug","summary":"Linkedin: get user posts (web_v2)","method":"GET","path":"/api/v1/linkedin/web_v2/get_user_posts","scope":"","tier":"extended","kind":"data","domain":"user","call_template":"treg call tikhub.x.linkedin-web-v2-get-user-posts --query url=https://www.linkedin.com/in/williamhgates/","cost":{"type":"per_success","value":0.001,"currency":"USD","per":1,"unit":"call","source":"rate_card_api","source_url":"https://api.tikhub.io/api/v1/tikhub/user/get_all_endpoints_info","checked":"2026-07-28","confidence":"verified","usd":0.001},"async":null,"platform_eligible":true,"platform_blocked":null,"miss":null,"status":null,"status_note":null,"superseded_by":null,"verified":null,"added":"2026-07-28","docs_url":"","has_example":false,"input":{"queryParams":{"url":{"type":"string","required":true,"note":"Profile URL or slug","example":"https://www.linkedin.com/in/williamhgates/"},"start_date":{"type":"other","required":false,"note":"Start date"},"end_date":{"type":"other","required":false,"note":"End date"}}},"test_request":{"queryParams":{"url":"https://www.linkedin.com/in/williamhgates/"}},"observed":{"samples":64468,"decided":36341,"ok_rate":0.9998,"p50_ms":2829,"p95_ms":5476,"last_ok_days":0,"hit_rate":null,"hit_samples":0},"reviews":{"teams":5,"samples":[{"usefulness":"useful","reason":"Returned recent LinkedIn activity with exact timestamps, post text, engagement, and original-versus-reshare metadata.","client":"mcp","month":"2026-10"},{"usefulness":"useful","reason":"Listed the member's recent public posts with exact text, author slug, timestamps and permalinks; enough to confirm a same-day post and recover the new activity URL.","client":"mcp","month":"2026-10"},{"usefulness":"partly","reason":"Returned no authored posts, but confirmed that the profile has no recent public post sample for voice matching.","client":"codex","month":"2026-09"}],"share":{"useful":0.71,"partly":0.29,"not_useful":0.0}}}],"related_capabilities":[{"endpoint_id":"treg.linkedin.company.profile","capability":"linkedin.company.profile","does":"Get a company's public profile"},{"endpoint_id":"treg.linkedin.post.comments","capability":"linkedin.post.comments","does":"List a post's comments"},{"endpoint_id":"treg.linkedin.post.detail","capability":"linkedin.post.detail","does":"Get a post's content & stats"},{"endpoint_id":"treg.linkedin.post.reactions","capability":"linkedin.post.reactions","does":"List a post's reactions"},{"endpoint_id":"treg.linkedin.user.profile","capability":"linkedin.user.profile","does":"Get a member's profile"}],"routing":{"contract":{"identity":[["linkedin_url"],["linkedin_handle"]],"output":{"posts":{"type":"list","required":true,"note":"provider-native LinkedIn post rows"},"next_cursor":{"type":"str"},"has_more":{"type":"bool"}},"miss":"posts == []","derive":{"linkedin_url":"linkedin_url(linkedin_handle)","linkedin_handle":"linkedin_handle(linkedin_url)"}},"plan":[{"endpoint_id":"fetchinio.linkedin.user.posts","accepts":[["linkedin_url"],["linkedin_handle"]],"usd":0.0015,"hit_rate":0.828,"usd_per_hit":0.0018115942028985507,"works":0.9995},{"endpoint_id":"harvestapi.linkedin.user.posts","accepts":[["linkedin_handle"]],"usd":0.004,"hit_rate":0.7579,"usd_per_hit":0.00527774112679773,"works":0.9998}],"also":[{"endpoint_id":"crawl4ai.linkedin.user.posts","usd":0.0009},{"endpoint_id":"justoneapi.x.linkedin-get-user-posts-v1","usd":0.02952},{"endpoint_id":"tikhub.x.linkedin-web-v2-get-user-posts","usd":0.001}],"headers":{"X-Treg-Route-Waterfall":"on by default: a miss tries the next provider; 0 = stop at the first miss","X-Treg-Route-Max-Cost":"USD ceiling for the whole call (default 1.00)","X-Treg-Route-Prefer":"provider[,…]","X-Treg-Route-Exclude":"provider[,…]","X-Treg-Route-Strict-Filters":"1 = never call a provider that cannot apply a filter you sent (answers 422, nothing charged); off by default — the answer names what was ignored in X-Treg-Ignored-Filters"}},"call_template":"treg call treg.linkedin.user.posts --method POST --data '{\"linkedin_handle\":\"…\"}'","example_response":null,"hints":["treg call treg.linkedin.user.posts --method POST --data '{\"linkedin_handle\":\"…\"}'   # run it — key injected server-side","treg catalog get crawl4ai.linkedin.user.posts   # the same job from crawl4ai"]}