Skip to main content
Retrieve LinkedIn posts from your watchlists with powerful filtering, sorting, and search capabilities. Access posts from keyword, people, and company watchlists with a unified API.

Query Parameters

watchlist_id
string | array
Watchlist ID(s) to retrieve posts from. Can be a single ID or multiple IDs. If omitted, retrieves posts from all team watchlists.
page
number
default:"1"
Page number for pagination (20 posts per page)

Filtering Parameters

labels
string | array
Filter by label tags. Multiple labels can be specified.
people_slug
string | array
Filter by specific people (profile slugs)
company_slug
string | array
Filter by specific companies (company slugs)
search_term
string
Search within post content
is_saved
boolean
Filter for bookmarked/saved posts only
lang
string
Filter by post language (e.g., “en”, “es”, “fr”)
start_date
string
Filter posts from this date onwards (ISO 8601 format: YYYY-MM-DD)
end_date
string
Filter posts up to this date (ISO 8601 format: YYYY-MM-DD)
post_type
string
Filter by post type (e.g., “article”, “image”, “video”, “poll”)
Filter for trending posts with high engagement
interacted
boolean
Filter for posts you’ve already liked or commented on
seniority_level
string | array
Filter by author’s seniority level. Supports multiple comma-separated values (e.g., "VP,Director,CXO"). Common values: "Entry", "Manager", "Director", "VP", "CXO", "Founder".
linkedin_post_slug
string
Retrieve a specific post by its LinkedIn slug

Sorting Parameters

sort_by
string
default:"recent"
Sort order for posts. Options:
  • recent - Most recent posts first (default)
  • popular_first - Highest engagement (likes + comments) first
  • engagement - Alias for popular_first
range_from
number
default:"0"
Pagination start offset (0-indexed). Use with range_to for custom page sizes.
range_to
number
default:"19"
Pagination end offset (inclusive). Default returns 20 posts (0-19).
curl -X GET \
  "https://api.outx.ai/api-posts?page=1" \
  -H "x-api-key: YOUR_API_KEY"
{
  "data": [
    {
      "id": "post-123",
      "linkedin_post_url": "https://linkedin.com/feed/update/urn:li:activity:1234567890",
      "tracking_list_id": "550e8400-e29b-41d4-a716-446655440000",
      "content": "Excited to announce our new AI-powered feature that helps developers...",
      "author_name": "Jane Smith",
      "author_url": "janesmith",
      "author_headline": "CTO at TechCorp | AI Enthusiast",
      "author_image_url": "https://media.licdn.com/dms/image/...",
      "created_at": "2024-01-15T10:35:00Z",
      "posted_at": "2024-01-15T10:30:00Z",
      "likes_count": 245,
      "comments_count": 32,
      "shares_count": 18,
      "bookmark": false,
      "post_type": "image",
      "language": "en",
      "tags": ["ai", "product-launch"],
      "image_urls": ["https://media.licdn.com/dms/image/..."],
      "videos": null,
      "seniority_level": "C-Level",
      "relevance_score": 8,
      "location_countries": ["United States"],
      "liker_ids": ["user-id-1", "user-id-2"],
      "commenter_ids": ["user-id-3"],
      "tagDescriptions": [
        {
          "tag": "ai",
          "description": "Artificial Intelligence related posts"
        }
      ]
    }
  ],
  "count": 156
}

Response Fields

data
array
Array of post objects
count
number
Total number of posts matching the filters

Post Object Fields

id
string
Unique post identifier
linkedin_post_url
string
Direct URL to the LinkedIn post
tracking_list_id
string
ID of the watchlist this post belongs to
content
string
Post text content
author_name
string
Name of the post author
author_url
string
LinkedIn profile slug of the author
author_headline
string
Headline/bio of the post author
author_image_url
string
Profile image URL of the author
created_at
string
ISO 8601 timestamp when the post was added to OutX
posted_at
string
ISO 8601 timestamp when the post was published on LinkedIn
likes_count
number
Number of likes on the post
comments_count
number
Number of comments on the post
shares_count
number
Number of shares/reposts
bookmark
boolean
Whether the post has been bookmarked/saved
post_type
string
Type of post (e.g., “text”, “image”, “video”, “article”, “poll”)
language
string
Detected language of the post
tags
array
Array of tag labels assigned to the post
image_urls
array
Array of image URLs attached to the post
videos
array
Array of video data attached to the post
seniority_level
string
Seniority level of the post author (e.g., “C-Level”, “VP”, “Director”)
relevance_score
number
Relevance score of the post (1-10). High: 8-10, Medium: 4-7, Low: 1-3
location_countries
array
Array of countries associated with the post author’s location
liker_ids
array
Array of user/company IDs who have liked this post via OutX
commenter_ids
array
Array of user/company IDs who have commented on this post via OutX
tagDescriptions
array
Array of objects with tag and description for each tag

Pagination

Posts are returned in batches of 20 by default. Use range_from and range_to for custom pagination:
# First 20 posts (default)
GET /api-posts?watchlist_id=YOUR_ID

# Posts 21-40
GET /api-posts?watchlist_id=YOUR_ID&range_from=20&range_to=39

# Posts 41-60
GET /api-posts?watchlist_id=YOUR_ID&range_from=40&range_to=59
The count field in the response shows the total number of posts matching your filters, so you know how many pages to fetch.

Omitting watchlist_id

If you omit the watchlist_id parameter, the API returns posts from all watchlists in your team. This is useful for building a unified feed across all your monitoring.

Error Responses

Status CodeError MessageDescription
400Invalid watchlist ID(s)One or more watchlist IDs don’t exist
401UnauthorizedInvalid or missing API key
403Access deniedTrying to access watchlists from another team
500Failed to fetch postsInternal server error

Frequently Asked Questions

Q: Can I get posts from all my watchlists at once? Yes. Simply omit the watchlist_id parameter from your request, and the API will return posts from all watchlists in your team. This is useful for building a unified feed across all your keyword, people, and company watchlists.
Q: What is the maximum number of posts returned per page? The default page size is 20 posts. You can use the range_from and range_to parameters for custom pagination. For example, range_from=0&range_to=49 would return the first 50 posts. The count field in the response tells you the total number of matching posts so you know how many pages to fetch.
Q: How do I filter by multiple seniority levels? Pass comma-separated values to the seniority_level parameter. For example: seniority_level=VP,Director,CXO. This returns posts authored by people at any of those seniority levels. Common values include Entry, Manager, Director, VP, CXO, and Founder.