Lemon8 Scraper - Posts, Creators & Hashtags
Pricing
from $2.13 / 1,000 lemon8 post delivereds
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
Maintained by CommunityActor 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
maxItemsis 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.
includeCommentsadds each post's comments at the same price per post.
At a glance
| Posts | Cost |
|---|---|
| 30 (the default run) | US$ 0.075 |
| 1,000 | US$ 2.50 |
| 10,000 | US$ 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 paste | You get |
|---|---|
https://www.lemon8-app.com/@lemon8_us or @lemon8_us | The creator's posts, newest first, up to maxItems |
https://www.lemon8-app.com/@lemon8_us/7618125167721710094 or the bare id | That one post |
https://www.lemon8-app.com/topic/skincare or #skincare | Posts from the hashtag feed |
https://www.lemon8-app.com/discover/skincare-routine | Keyword search for "skincare routine" |
https://www.lemon8-app.com/feed/fashion?region=jp | The 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 field | Read as |
|---|---|
mode (feed, discover, profile, post) | Only the list that belongs to that mode is scraped |
keywords, searchTerm, searchTerms, searchQueries, query | keywords |
profileUrls, profileUrl, username, usernames | Profiles |
postUrls, startUrls (strings or {"url": ...}) | urls |
feedCategories, categories | feedCategories |
maxResults | Cap for the whole run (0 = 500) |
limit | Posts per profile or keyword |
getDetails | includePostDetails; true also returns comments |
incrementalMode | onlyNew |
resumeFromRunId | resumeFromDataset when it is a dataset ID |
proxy | proxyConfiguration |
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
| Field | Description |
|---|---|
type | post, or error for a row that could not be delivered |
id / groupId, url | Lemon8 post id and public page |
postType | Gallery (photo carousel), Video or Article |
title, content, shortContent | Title, full text (line breaks kept) and list preview |
hashtags | Hashtags used, without # |
images, imageCount, thumbnailUrl, videoUrl | Media links (signed; they expire within hours) |
likes, saves, commentCount, views | Public counters at run time |
comments | With includeComments: {id, text, likes, replyCount, createdAt, authorName} |
publishedAt, publishTime, modifiedAt | Publish time (ISO 8601 UTC and seconds) and last edit |
authorUsername, authorNickname, authorUrl, authorVerified | Creator |
authorFollowers, authorFollowing, authorTotalLikes, authorPostCount | Creator's public counters |
source | Input that produced the row: profile:@lemon8_us, hashtag:#skincare, search:easy recipes, search-hashtag:..., search-related:..., feed:fashion, post |
error / errorCode | Only on rows that could not be delivered |
The Console shows two views: Posts and Creators.
Errors (never charged)
| errorCode | Meaning |
|---|---|
POST_NOT_FOUND | The post was removed, made private or never existed |
PROFILE_NOT_FOUND | No Lemon8 account with that handle |
HASHTAG_NOT_FOUND | No hashtag with that name in the selected region; paste its /topic/<id> URL instead |
NO_RESULTS | The keyword, hashtag, feed or profile has no public posts |
INVALID_URL | Not a Lemon8 post, profile, hashtag, search or feed link |
BLOCKED | Lemon8 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 ApifyClientclient = 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
maxItemsfor most terms, but a few broad words (for example "books") have no search page, hashtag or suggestion and returnNO_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:
onlyNewfor scheduled runs. - 2026-09-28: hashtag names that Lemon8 only resolves outside the US (for example #travel) now return posts.