Posts by Keyword

🚧 Coming soon. Signals are not available yet. This page describes how they will work at launch – the /signals endpoints, signal.* events and the SDK, CLI and MCP signal commands do not work today.

The postSearch signal runs a LinkedIn post search on a schedule and reports every post it has not seen before. Use it to find conversations about your topic, your product or a competitor as they start, instead of repeating the same st.searchPosts request every day.

Events

Event typeWebhook eventWhat happened
postFoundsignal.postFoundA post matching the search appeared that the signal has not reported before.

Creating

json
{
  "type": "postSearch",
  "term": "linkedin automation api",
  "filter": {
    "datePosted": "pastWeek",
    "authorIndustries": ["Software Development"]
  },
  "label": "category-watch"
}
  • term – keyword or phrase to search, from 1 to 50 characters. Either term or customSearchUrl is required.
  • filter (optional) – the same filter as in st.searchPosts, except sort: a signal always searches by latest, because it looks for what is new.
  • customSearchUrl (optional) – a LinkedIn content search URL, used instead of term and filter. Its sort order is replaced with latest.
CheckedEach check spends
twice a day1 of stSearchQueries

A check reads the 50 most recent matching posts. The baseline is the posts that match at the first check.

💡 Searches are the scarcest limit: by default an account has 300 a month. Two postSearch signals use about 120 of them. A precise phrase with filters gives fewer, better events than a broad word.

Event fields

json
{
  "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
  "signalId": "7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d",
  "signalType": "postSearch",
  "label": "category-watch",
  "type": "postFound",
  "detectedAt": "2026-10-12T09:50:00Z",
  "post": {
    "url": "https://www.linkedin.com/feed/update/urn:li:activity:2345678901234567890",
    "activityUrn": "urn:li:activity:2345678901234567890",
    "time": "2026-10-12T08:12:00Z",
    "type": "original",
    "author": {
      "type": "person",
      "name": "Example Person",
      "profileUrl": "https://www.linkedin.com/in/person3",
      "headline": "Founder at Example Company"
    },
    "reposter": null,
    "text": "Looking for a LinkedIn automation API that works with our own accounts. Any recommendations?",
    "repostText": null,
    "hashtags": [],
    "mentions": [],
    "externalLinks": [],
    "images": [],
    "documentSlides": [],
    "hasVideo": false,
    "videoThumbnail": null,
    "hasPoll": false,
    "reactionsCount": 2,
    "commentsCount": 5,
    "repostsCount": 0
  }
}
  • post – the matching post, with the same fields as an item of st.searchPosts. Counters are as they were at the check that found it.

The common fields – id, signalId, signalType, label, type, detectedAt – are described in Receiving events.

A post is reported once per signal, even if it later drops out of the search and comes back. Two postSearch signals that both match a post each report it.