Catalog / Lobsters

Lobsters API

lobste.rs

Read-only live access to Lobsters newest stories, story details, and comments. Newest listings use Lobsters' 25-story source pages; callers can page through them and carry the returned opaque checkpoint in `checkpoint` to receive each source-page story once. The optional Unix-second `since` filter remains available for coarse time-based polling. Comment offsets are applied to the comments currently present on a fetched story page.

  • Social & video
  • lobsters
  • stories
  • comments
  • news
  • read-only
3 endpointsDocs updated

Endpoint health

Loading verification…

Connect your agent

Connect through MCP so your agent can find this API, read its docs, and call its endpoints.

Setup guide

Add the server from your terminal.

Claude Code · terminal
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcp

In Claude Code, run /mcp, select agent-data, then Authenticate. Sign in to your agent-data account in the browser.

Then ask your agent to use the Lobsters API for your task.

Call it over HTTP

Get an API key

Sign up free, generate an API key, and set it as AGENT_DATA_API_KEY in your environment. Your first 100 calls each month are free.

Newest Stories

Optional parameters 4

Lobsters newest source page, starting at 1; page 1000 is the configured maximum.

Maximum returned stories; Lobsters exposes 25 stories per source page.

Optional strict Unix-second filter; only stories newer than it are returned.

Opaque checkpoint returned by this route; excludes IDs already returned on a prior poll.

View call pricing
cURL · Newest stories
curl --request GET --get 'https://api.agent-data.dev/lobste-rs/v1/stories/newest' \
  --header "Authorization: Bearer $AGENT_DATA_API_KEY"

Endpoints

Inputs and response fields for every endpoint in this API.

GETNewest stories/v1/stories/newest

Newest Stories

Input

pageOptionalQuery · integer, min: 1, max: 1000, default: 1

Lobsters newest source page, starting at 1; page 1000 is the configured maximum.

Example: 1

limitOptionalQuery · integer, min: 1, max: 25, default: 10

Maximum returned stories; Lobsters exposes 25 stories per source page.

Example: 5

sinceOptionalQuery · integer | null

Optional strict Unix-second filter; only stories newer than it are returned.

Example: 1790030000

checkpointOptionalQuery · string | null

Opaque checkpoint returned by this route; excludes IDs already returned on a prior poll.

Example: eyJzZWVuIjpbImxpZXk4cSJdfQ

Response

pageinteger
itemsobject[]
items[].idstring
items[].urlstring
items[].link?string | null
items[].tagsstring[]
items[].text?string | null
items[].titlestring
items[].authorstring
items[].engagementobject
items[].engagement.score?integer | null
items[].engagement.comments?integer | null
items[].published_atstring
limitinteger
sourcestring
next_pageinteger | null
fetched_atstring
request_idstring
applied_sinceinteger | null
next_checkpointstring

Fields marked ? are optional.

GETStory details/v1/stories/{story_id}

Story Detail

Input

story_idRequiredPath · string

Six-character Lobsters short story ID from newest-stories.items[].id.

Example: liey8q

Response

itemobject
item.idstring
item.urlstring
item.link?string | null
item.tagsstring[]
item.text?string | null
item.titlestring
item.authorstring
item.engagementobject
item.engagement.score?integer | null
item.engagement.comments?integer | null
item.published_atstring
sourcestring
commentsobject[]
comments[].idstring
comments[].text?string | null
comments[].authorstring
comments[].story_idstring
comments[].parent_id?string | null
comments[].created_atstring
comments[].engagementobject
comments[].engagement.score?integer | null
comments[].engagement.comments?integer | null
fetched_atstring
request_idstring

Fields marked ? are optional.

GETStory comments/v1/stories/{story_id}/comments

Story Comments

Input

story_idRequiredPath · string

Six-character Lobsters short story ID from newest-stories.items[].id.

Example: liey8q

offsetOptionalQuery · integer, min: 0, max: 10000, default: 0

Zero-based offset within comments on the current story page.

Example: 0

limitOptionalQuery · integer, min: 1, max: 100, default: 20

Maximum comments returned from the current story page.

Example: 2

Response

itemsobject[]
items[].idstring
items[].text?string | null
items[].authorstring
items[].story_idstring
items[].parent_id?string | null
items[].created_atstring
items[].engagementobject
items[].engagement.score?integer | null
items[].engagement.comments?integer | null
limitinteger
offsetinteger
sourcestring
story_idstring
fetched_atstring
request_idstring
next_offsetinteger | null

Fields marked ? are optional.

Don’t see the endpoint you need?

Ask agent-data to add an endpoint or return more fields. Extensions are free and keep existing endpoints working.