Bluesky, Mastodon, Lemmy, Discourse and Tumblr

Posts from social networks and forums as typed JSON, every one in the same post shape, so feeds merge without mapping.

Embed
Preview of the card
<a href="https://scrapelyserp.com/docs/social"><img src="https://scrapelyserp.com/docs/_api/public/orgs/affc5b0f-d3c2-423a-8143-9d10db5736ae/spaces/981e6275-da3f-446c-82de-889f59c83b6f/pages/248d6a87-72eb-45fe-af62-56091cf272de/social-card.svg?v=3e7ae33eec8b" alt="Bluesky, Mastodon, Lemmy, Discourse and Tumblr" width="600" height="315"></a>

Posts from social networks and forums as typed JSON, every one in the same post shape, so feeds merge without mapping.

At a glance

Every endpoint here answers { endpoint, url, credits, duration_ms, data } with data as a SocialFeed: posts and next_cursor. Each post has the same fields whatever the site: id, url, author, author_name, title, text, created_at, likes, replies, reposts, tags, community, link and media. A count a site does not show is null. Send next_cursor back as cursor for the next page.

Endpoint

Typical

GET /v1/structured/bluesky/search

about 4.8 million posts per credit, up to 100 per call

GET /v1/structured/bluesky/posts

about 1.4 million posts per credit, up to 100 per call

GET /v1/structured/mastodon/hashtag

about 2.8 million posts per credit, up to 40 per call

GET /v1/structured/lemmy/search

about 2.3 million posts per credit, up to 50 per call

GET /v1/structured/lemmy/posts

about 3.5 million posts per credit, up to 50 per call

GET /v1/structured/discourse/search

about 7.5 million posts per credit, 50 per call

GET /v1/structured/discourse/topic

about 750,000 posts per credit, 20 per call

GET /v1/structured/tumblr/tagged

about 450,000 posts per credit, up to 20 per call

GET /v1/structured/tumblr/search

about 450,000 posts per credit, up to 20 per call

curl -G "https://api.scrapelyserp.com/v1/structured/bluesky/search" \
  -H "Authorization: Bearer $SCRAPELY_API_KEY" \
  --data-urlencode "query=web scraping" \
  -d sort=latest

Watching for mentions

A mention list does it for you: name a brand or a phrase, and every run searches Reddit, Bluesky, Lemmy and Tumblr newest first and sends each post you have not seen as watchlist.mention.found.

A handle, community, topic or server that does not exist (or is not public) is 404 NOT_FOUND, and a page we could not read is 502 TARGET_FAILED. Neither costs anything.

Bluesky

bluesky/search searches every public post; bluesky/posts is one account's posts, newest first, without its reposts of others.

Parameter

Type

Default

Description

query (required)

string

—

The search terms.

sort

latest, top

latest

Result order.

limit

integer

25

Posts per page, 1–100.

cursor

string

—

The next_cursor of the previous page.

Parameter

Type

Default

Description

handle (required)

string

—

The account, e.g. bsky.app (also @bsky.app or its profile URL).

limit

integer

25

Posts per page, 1–100.

cursor

string

—

The next_cursor of the previous page.

Full reference → GET /v1/structured/bluesky/search, GET /v1/structured/bluesky/posts

Mastodon

Public posts with a hashtag, on mastodon.social or any server you name with instance. A server also shows posts from the servers it federates with, so author always carries its server: name@server. reposts counts boosts.

Parameter

Type

Default

Description

tag (required)

string

—

The hashtag, with or without #, e.g. webscraping.

instance

string

mastodon.social

The Mastodon server to read, e.g. fosstodon.org. It also shows posts from servers it federates with.

limit

integer

20

Posts per page, 1–40.

cursor

string

—

The next_cursor of the previous page.

Full reference → GET /v1/structured/mastodon/hashtag

Lemmy

lemmy/search searches posts; lemmy/posts is one community's. likes is the score (up votes less down votes), replies the comment count, community is name@server.

Parameter

Type

Default

Description

query (required)

string

—

The search terms.

instance

string

lemmy.world

The Lemmy server to read, e.g. lemmy.ml. It also has the communities it federates with.

sort

enum

new

Result order.

limit

integer

20

Posts per page, 1–50.

cursor

string

—

The next_cursor of the previous page (a page number).

Parameter

Type

Default

Description

community (required)

string

—

The community, e.g. technology, or one on another server: technology@lemmy.ml.

instance

string

lemmy.world

The Lemmy server to read, e.g. lemmy.ml. It also has the communities it federates with.

sort

enum

new

Result order.

limit

integer

20

Posts per page, 1–50.

cursor

string

—

The next_cursor of the previous page (a page number).

Full reference → GET /v1/structured/lemmy/search, GET /v1/structured/lemmy/posts

Discourse forums

Any public Discourse forum: name it with forum. discourse/search returns matching posts with their topic's title, tags and category (community), and an excerpt as text. discourse/topic returns a topic's posts in order, full text, the opening post first. A forum that needs a login is 404 NOT_FOUND.

Parameter

Type

Default

Description

forum (required)

string

—

The forum’s domain, e.g. meta.discourse.org (or any URL on it).

query (required)

string

—

The search terms.

cursor

string

—

The next_cursor of the previous page (a page number).

Parameter

Type

Default

Description

forum (required)

string

—

The forum’s domain, e.g. meta.discourse.org (or any URL on it).

topic (required)

string

—

The topic’s id, e.g. 49045, or its URL.

cursor

string

—

The next_cursor of the previous page (a page number).

Full reference → GET /v1/structured/discourse/search, GET /v1/structured/discourse/topic

Tumblr

tumblr/tagged is posts with a tag; tumblr/search searches by keyword. author is the blog, likes the likes (or notes), reposts the reblogs. Promoted posts are left out.

Parameter

Type

Default

Description

tag (required)

string

—

The tag, e.g. webscraping.

sort

recent, top

recent

Result order.

limit

integer

20

Posts per page, 1–20.

cursor

string

—

The next_cursor of the previous page.

Parameter

Type

Default

Description

query (required)

string

—

The search terms.

sort

recent, top

recent

Result order.

limit

integer

20

Posts per page, 1–20.

cursor

string

—

The next_cursor of the previous page.

Full reference → GET /v1/structured/tumblr/tagged, GET /v1/structured/tumblr/search

Updated