Lemon8 Scraper - Posts, Creators & Hashtags avatar

Lemon8 Scraper - Posts, Creators & Hashtags

Pricing

from $2.13 / 1,000 lemon8 post delivereds

Go to Apify Store
Lemon8 Scraper - Posts, Creators & Hashtags

Lemon8 Scraper - Posts, Creators & Hashtags

Scrape public Lemon8 posts from post URLs, creator profiles, keyword search, hashtags and category feeds: text, images, video, likes, saves, views, comments on request and creator followers. No login, no start fee; input from other Lemon8 scrapers works. US$ 2.50/1,000 posts.

Pricing

from $2.13 / 1,000 lemon8 post delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

10 hours ago

Last modified

Categories

Share

Lemon8 Scraper

Lemon8 Scraper exports public Lemon8 posts to JSON, CSV or Excel. Start from post URLs, a creator's profile, a keyword search, a hashtag or a category feed such as fashion or food. Each post comes with title, full text, hashtags, all images, the video link, likes, saves, comment count, views, publish date and the creator's follower count. It is meant for influencer agencies, brands, social media analysts and researchers working with Lemon8, ByteDance's lifestyle app used in the US, the UK, Japan and Southeast Asia.

US$ 2.50 per 1,000 posts. No monthly fee, no start fee. Error rows are free.

What it fixes

  • Engagement on every mode. Lemon8's lists show only likes. The Actor opens each post (one light request) and adds saves, comment count, views, publish date, full text, every image, the video link and the creator's followers, so profile, hashtag, search and feed rows have the same fields as a single post URL.
  • Keyword search that does not stop at 60 posts. Lemon8's web search shows 5 to 60 posts per keyword. The Actor continues with the hashtag of the same name and then with the searches Lemon8 suggests ("workout" -> "Workout outfits"), and marks those rows in source.
  • Full creator profiles. Profile mode follows Lemon8's pagination until the profile ends or maxItems is reached. One test run returned all 218 posts the website lists for @lemon8_us.
  • Hashtag names that resolve. Lemon8 keeps old empty topics under popular names; the Actor picks the hashtag id that real posts use.
  • Errors as rows, not failed runs. A removed post, a missing profile or a keyword with no results comes back as one free row with an errorCode. Blocked pages are retried on fresh IPs, with residential proxy as a last resort. On 2026-10-08, 30 of 30 cloud test runs (profiles, posts, keywords, hashtags, feeds, five regions, comments, only-new runs and other scrapers' input formats) ended with posts or the expected free error row.
  • Comments on request. includeComments adds each post's comments at the same price per post.

At a glance

PostsCost
30 (the default run)US$ 0.075
1,000US$ 2.50
10,000US$ 25.00

One charge is one post row, whatever the mode, with details, creator stats, images and video links included. No start fee; error rows and duplicates inside a run are not charged. Apify compute is included in the price.

Input

Every field is optional. An empty input returns 30 posts from the public profile @lemon8_us. The input form describes each field; this is what each kind of link returns:

You pasteYou get
https://www.lemon8-app.com/@lemon8_us or @lemon8_usThe creator's posts, newest first, up to maxItems
https://www.lemon8-app.com/@lemon8_us/7618125167721710094 or the bare idThat one post
https://www.lemon8-app.com/topic/skincare or #skincarePosts from the hashtag feed
https://www.lemon8-app.com/discover/skincare-routineKeyword search for "skincare routine"
https://www.lemon8-app.com/feed/fashion?region=jpThe fashion feed of Lemon8 Japan

Keywords and hashtags in one run:

{
"keywords": ["skincare routine", "easy recipes"],
"hashtags": ["#fitinspo"],
"region": "us",
"maxItems": 50
}

A daily run with only new posts (save it as a Task and attach a Schedule):

{ "urls": ["@lemon8_us"], "hashtags": ["skincare"], "maxItems": 30, "onlyNew": true }

With onlyNew, each run delivers and charges only posts not delivered before; profiles stop at the first page with a known post, so a quiet day costs nothing and ends with "No new posts since the last run". The memory is a Key-Value Store named lemon8-scraper-only-new in your account; delete it to start over.

Switching from another Lemon8 actor? Your existing input works

Paste the JSON input you already have. These field names are read too:

Your fieldRead as
mode (feed, discover, profile, post)Only the list that belongs to that mode is scraped
keywords, searchTerm, searchTerms, searchQueries, querykeywords
profileUrls, profileUrl, username, usernamesProfiles
postUrls, startUrls (strings or {"url": ...})urls
feedCategories, categoriesfeedCategories
maxResultsCap for the whole run (0 = 500)
limitPosts per profile or keyword
getDetailsincludePostDetails; true also returns comments
incrementalModeonlyNew
resumeFromRunIdresumeFromDataset when it is a dataset ID
proxyproxyConfiguration

Fields with no meaning here (state keys, media downloads, dataset names) are ignored instead of failing the run. Example:

{
"mode": "profile",
"profileUrls": ["https://www.lemon8-app.com/@lemon8_us"],
"keywords": ["fashion outfits"],
"maxResults": 20
}

This returns the 20 newest posts of @lemon8_us and nothing from the keyword.

Output

One row per post. A real row from the default run on 2026-09-15, with long URLs shortened:

{
"type": "post",
"id": "7618125167721710094",
"groupId": "7618125167721710094",
"url": "https://www.lemon8-app.com/@lemon8_us/7618125167721710094",
"postType": "Gallery",
"region": "us",
"title": "Week 49 & 50 Winners 🛍️ 💐",
"content": "Congrats to our Trending Hashtag Challenge winners for Week 49 & 50!\nWe've really enjoyed seeing all of your amazing submissions. 💛 ...",
"hashtags": [],
"images": ["https://p19-lemon8-sign-useast5.tiktokcdn-us.com/...webp", "..."],
"imageCount": 7,
"thumbnailUrl": "https://p16-lemon8-cross-sign.tiktokcdn-us.com/...webp",
"videoUrl": null,
"likes": 323,
"saves": 44,
"commentCount": 60,
"views": 52052,
"publishedAt": "2026-03-17T08:05:05Z",
"authorUsername": "lemon8_us",
"authorNickname": "Lemon8 US",
"authorVerified": true,
"authorFollowers": 336417,
"authorFollowing": 18,
"authorTotalLikes": 176802,
"authorPostCount": 276,
"detailsLoaded": true,
"source": "profile:@lemon8_us",
"error": null,
"errorCode": null,
"scrapedAt": "2026-09-15T20:22:30.400955+00:00"
}

Main fields

FieldDescription
typepost, or error for a row that could not be delivered
id / groupId, urlLemon8 post id and public page
postTypeGallery (photo carousel), Video or Article
title, content, shortContentTitle, full text (line breaks kept) and list preview
hashtagsHashtags used, without #
images, imageCount, thumbnailUrl, videoUrlMedia links (signed; they expire within hours)
likes, saves, commentCount, viewsPublic counters at run time
commentsWith includeComments: {id, text, likes, replyCount, createdAt, authorName}
publishedAt, publishTime, modifiedAtPublish time (ISO 8601 UTC and seconds) and last edit
authorUsername, authorNickname, authorUrl, authorVerifiedCreator
authorFollowers, authorFollowing, authorTotalLikes, authorPostCountCreator's public counters
sourceInput that produced the row: profile:@lemon8_us, hashtag:#skincare, search:easy recipes, search-hashtag:..., search-related:..., feed:fashion, post
error / errorCodeOnly on rows that could not be delivered

The Console shows two views: Posts and Creators.

Errors (never charged)

errorCodeMeaning
POST_NOT_FOUNDThe post was removed, made private or never existed
PROFILE_NOT_FOUNDNo Lemon8 account with that handle
HASHTAG_NOT_FOUNDNo hashtag with that name in the selected region; paste its /topic/<id> URL instead
NO_RESULTSThe keyword, hashtag, feed or profile has no public posts
INVALID_URLNot a Lemon8 post, profile, hashtag, search or feed link
BLOCKEDLemon8 blocked every retry for that page; run again

The run fails only when nothing at all could be delivered because every retry was blocked.

Use it from code and AI agents

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("scrapewise/lemon8-scraper").call(run_input={"hashtags": ["skincare"], "maxItems": 100})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["url"], post["likes"], post["saves"], post["authorFollowers"])

The same works from Node.js, the HTTP API (run-sync-get-dataset-items), n8n, Make and Zapier. For AI agents, add scrapewise/lemon8-scraper as a tool through the Apify MCP server (https://mcp.apify.com).

Limitations

  • Keyword search is shallow on the web; the fallback above reaches maxItems for most terms, but a few broad words (for example "books") have no search page, hashtag or suggestion and return NO_RESULTS, free.
  • Region matters for search, hashtags and feeds. Posts and profiles open from any region.
  • Profiles list what the website lists. The post counter can be higher than what Lemon8 serves (@lemon8_us shows 276 and lists 218).
  • Comments are minimal: display name only, no commenter id or profile; replies come as a count. Creator bios are not collected.
  • Media links expire; download files soon after the run.

FAQ

Do I need a Lemon8 account or cookies? No. Only public pages are read, without login.

Can I get every post of a creator? Yes: set maxItems high, for example 5,000.

How fast is it? The default run of 30 posts with details takes under half a minute. Turning off includePostDetails is several times faster, without saves, comments, views and dates.

The run was interrupted. Do I pay twice? No. Pick its dataset in resumeFromDataset; posts already there are skipped and not charged.

Is it legal? It collects only what Lemon8 shows publicly without login and no personal data of ordinary users. Follow Lemon8's terms and the privacy laws that apply to you.

Changelog

  • 2026-10-08: comments on request, keyword search continues with Lemon8's suggested searches, resumeFromDataset, and the input of other Lemon8 scrapers works as is.
  • 2026-10-04: onlyNew for scheduled runs.
  • 2026-09-28: hashtag names that Lemon8 only resolves outside the US (for example #travel) now return posts.