Lemon8 Search Scraper avatar

Lemon8 Search Scraper

Pricing

from $2.39 / 1,000 posts

Go to Apify Store
Lemon8 Search Scraper

Lemon8 Search Scraper

Scrape Lemon8 posts by keyword in 10 regions: titles, full text, hashtags, likes, saves, comments, views, images, video links, authors and comment threads with replies. Monitor searches with incremental mode. Export JSON, CSV or Excel via API.

Pricing

from $2.39 / 1,000 posts

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Categories

Share

Lemon8 Search Scraper

Lemon8 Search Scraper extracts Lemon8 posts by keyword in 10 regions: title, text, hashtags, likes, saves, comments, views, images, video links, author profile and the full comment thread with replies, one clean row per post.

Search any keyword in the US, Canada, Australia, New Zealand, Japan, Thailand, Indonesia, Vietnam, Malaysia or Singapore, go past the first page of results through Lemon8's related posts (up to 5,000 per keyword), and monitor a search over time with incremental mode that returns only new and changed posts.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/lemon8-search-scraper — scrapes Lemon8 (lemon8-app.com) posts by keyword. Input: {"searchTerm": "skincare" (string; used when startUrls is empty), "startUrls": ["https://www.lemon8-app.com/discover/coffee?region=jp"] (optional Lemon8 discover or experience links; keyword and region are read from each link; take precedence over searchTerm), "region": "us" (one of us, au, nz, jp, th, id, vn, my, sg, ca), "limit": 50 (posts per keyword or link, 1-5000; search results first, then related posts), "getDetails": true (open each post for full text, hashtags, related topics, location, all images, video URL, comments and replies), "detailsLimit": null (details for only the first N posts; empty = all), "commentExpansionTimeout": 30 (seconds per post for comments, 10-300), "incrementalMode": false, "stateKey": "skincare-us-daily", "emitUnchanged": false, "emitExpired": false (recurring monitoring), "resumeFromRunId": "RUN_OR_DATASET_ID" (skip posts already saved there), "proxy": {"useApifyProxy": true}, "dev_transform_fields": ["id", "author.name", "statistics.likesCount"] (return only these dot paths), "dev_dataset_name": "lemon8-{DATE}", "dev_dataset_clear": false}. Run via ApifyClient("YOUR_TOKEN").actor("parsebird/lemon8-search-scraper").call(run_input=input). Output, one row per post: id, postType (Gallery/Video), region, author {name, username, userId, followerCount, bio, profileUrl, profileImageUrl}, title, content (preview), postUrl, publishedAt, statistics {likesCount, savedCount, commentsCount, viewsCount}, coverImageUrl, images [{src, alt, width, height}], comments (preview), isVideo, videoData {posterUrl, videoUrl, durationSeconds}, source ("search" or "related"), searchQuery, position, details {fullContent, hashtags, editTime, statistics, galleryImages, imageText, relatedTopics, location, videoData}, allComments [{author, content, time, likes, replies[]}], commentStats {totalComments, totalReplies, previewCommentCount, complete}, scrapedAt; plus changeType, changedFields, firstSeenAt, lastSeenAt in incremental mode. Pricing: pay per post saved. Get your API token at https://console.apify.com/account#/integrations. Full API spec: https://apify.com/parsebird/lemon8-search-scraper/api

What is Lemon8 Search Scraper?

Lemon8 Search Scraper is a Lemon8 data extraction tool that reads public posts from Lemon8, ByteDance's lifestyle app for beauty, fashion, food, home, fitness and travel content. You give it a keyword such as skincare and a region, and it returns the posts Lemon8 shows for that search, with engagement counts, images, video links, author data and comments. Lemon8 has no public API for this, so the scraper works as a Lemon8 API alternative for marketers, brand and influencer teams, trend researchers and data teams.

The easiest way to try it: keep the prefilled keyword skincare, click Start, and open the dataset. You get 10 skincare posts from Lemon8 US with full text, hashtags and comments.

No Lemon8 account or login is needed.

What can Lemon8 Search Scraper do?

  • 🔎 Keyword search in 10 Lemon8 regions: United States, Canada, Australia, New Zealand, Japan, Thailand, Indonesia, Vietnam, Malaysia and Singapore. Keywords work in any language, for example カフェ, คาเฟ่ or cà phê.
  • 🔗 Discover links: paste one or more lemon8-app.com/discover/... or /experience/... links instead of typing keywords. The keyword and region are read from each link.
  • 📈 More than one page of results: Lemon8 shows about 25–60 posts per keyword search. The scraper then follows Lemon8's related-post lists for those results to collect up to 5,000 posts per keyword. Every row says whether it came from the search results or from related posts.
  • 📝 Detailed post data (on by default): full post text, hashtags, related topics, tagged location, text found in the images, all images in 1080px, the MP4 video link, and exact likes, saves, comments and views.
  • 💬 Comments and replies: every comment Lemon8 shows on the web, with author, time and likes, plus the replies under each comment.
  • 🔁 Incremental monitoring: on scheduled runs, mark each post as NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED and return only what changed, so you don't pay for the same posts every day.
  • ⏯️ Resume: continue an interrupted run without paying again for posts it already saved.
  • 🧩 Developer options: return only the fields you need, or write into a named dataset that you reuse across runs.

Because Lemon8 Search Scraper runs on the Apify platform, you also get:

  • ⏰ Scheduling to track a hashtag, product or trend daily or weekly.
  • 🔌 API access and client libraries for Python and JavaScript.
  • 🔗 Integrations with Make, Zapier, Google Sheets, Slack, webhooks and more.
  • 📦 Export to JSON, CSV, Excel, XML or HTML from the Storage tab or the API.

What data can you extract from Lemon8?

FieldDescription
id / postUrlLemon8 post ID and link
title / contentPost title and the text preview from the listing
postType / isVideoGallery (photo post) or Video
authorDisplay name, username, user ID, follower count, bio, profile link and avatar
statisticslikesCount, savedCount, commentsCount and viewsCount
publishedAtPublication time (ISO 8601, UTC)
images / coverImageUrlImage links with Lemon8's image descriptions, and the cover image
videoDataPoster image, MP4 link, duration and size for video posts
commentsComments shown on the search result card
details.fullContent / details.hashtagsFull post text and its hashtags*
details.relatedTopics / details.locationLemon8's related search topics and the tagged place*
details.imageText / details.galleryImagesText found in the images and all images in 1080px*
details.editTimeWhen the post was last edited*
allComments / commentStatsFull comment thread with replies, and counts of what was collected*
source / searchQuery / positionSearch results or related posts, the keyword, and the post's position

* With Get Detailed Post Data on. In incremental mode every row also has changeType, changedFields, firstSeenAt and lastSeenAt.

How to scrape Lemon8

  1. Open Lemon8 Search Scraper in Apify Console and sign in (or create a free Apify account).
  2. Enter a Search Term, such as matcha latte, and pick a Region. Or paste Lemon8 discover links into Start URLs.
  3. Set Post Limit. Leave Get Detailed Post Data on for full text, hashtags and comments, or turn it off for a faster pass over the listings.
  4. For a recurring search, turn on Incremental mode and give it a State key such as streetwear-sg-daily.
  5. Click Start. When the run finishes, download the data as JSON, CSV or Excel from the Storage tab, or read it through the API.

Input parameters

ParameterTypeRequiredDefaultDescription
searchTermstringNo*fashionKeyword to search Lemon8 for. Used only when Start URLs is empty
startUrlsarrayNo*[]Lemon8 discover or experience links. The keyword and region are read from each link. Take precedence over Search Term
regionstringNousus, au, nz, jp, th, id, vn, my, sg or ca
limitintegerNo50Maximum posts per keyword or link (1 to 5,000)
getDetailsbooleanNotrueOpen each post for full text, hashtags, related topics, location, images, video link and comments
detailsLimitintegerNoallGet details for only the first N posts of each keyword or link
commentExpansionTimeoutintegerNo30Seconds to spend on one post's comments and replies (10 to 300)
incrementalModebooleanNofalseClassify posts against earlier runs and return only new and changed ones
stateKeystringNoderivedName of the monitoring campaign. Runs with the same key share history
emitUnchangedbooleanNofalseAlso return (and pay for) UNCHANGED posts
emitExpiredbooleanNofalseAlso return (and pay for) tracked posts that dropped out of the search results
resumeFromRunIdstringNo—Run or dataset ID of an interrupted run. Posts already saved there are skipped and not charged again
proxyobjectNoApify ProxyConnection settings. Left empty, the Actor connects directly and moves to Apify Proxy if Lemon8 refuses requests
dev_transform_fieldsarrayNo[]Return only these fields, as dot paths like author.name or images.0.src
dev_dataset_namestringNodefaultSave into a named dataset. Supports {ACTOR}, {DATE} and {TIME}
dev_dataset_clearbooleanNofalseEmpty the named dataset before this run adds posts

* Enter a Search Term or at least one Start URL.

Search by keyword and region:

{
"searchTerm": "skincare",
"region": "us",
"limit": 20,
"getDetails": true
}

Paste a discover link instead:

{
"startUrls": ["https://www.lemon8-app.com/discover/coffee?region=jp"],
"limit": 15
}

Recurring monitoring of the same search:

{
"searchTerm": "streetwear",
"region": "sg",
"limit": 50,
"getDetails": false,
"incrementalMode": true,
"stateKey": "streetwear-sg-daily"
}

Output example

One row per post. This is a real record from a skincare search in the US, shortened, with the creator's and commenter's names replaced. Image, video and avatar links are signed Lemon8 CDN links.

{
"id": "7509859619695755819",
"postType": "Gallery",
"region": "us",
"author": {
"name": "Sample Creator",
"username": "sample.creator",
"userId": "118134275572408320",
"followerCount": 632,
"bio": "make sure to go follow me on tiktok",
"profileUrl": "https://www.lemon8-app.com/@sample.creator?region=us",
"profileImageUrl": "https://p16-lemon8-cross-sign.tiktokcdn.com/...jpeg",
"followingCount": 124,
"postCount": 16
},
"title": "skincare routine ",
"content": "✨ New to skincare? Here's your simple step-by-step routine to glow without the guesswork 💧💫 1️⃣ Cleanser – always start fresh 2️⃣ Toner – optional but helpful! ...",
"postUrl": "https://www.lemon8-app.com/@sample.creator/7509859619695755819?region=us",
"publishedAt": "2025-05-29T13:32:37Z",
"statistics": { "likesCount": 11782, "savedCount": 12509, "commentsCount": 66, "viewsCount": 515421 },
"coverImageUrl": "https://p16-lemon8-cross-sign.tiktokcdn.com/...webp",
"images": [
{ "src": "https://p16-lemon8-cross-sign.tiktokcdn.com/...webp", "alt": "", "width": 640, "height": 853 }
],
"comments": [
{
"id": "7523655998892933943",
"author": "Sample Commenter",
"authorProfileUrl": "https://www.lemon8-app.com/@sample.commenter?region=us",
"content": "I have a moisturizer that has spf is that good to use?",
"time": "2025-07-05T17:47:48Z",
"likes": 5,
"replyCount": 2
}
],
"isVideo": false,
"videoData": null,
"source": "search",
"searchQuery": "skincare",
"position": 1,
"details": {
"title": "skincare routine ",
"fullContent": "✨ New to skincare? Here's your simple step-by-step routine to glow without the guesswork 💧💫
1️⃣ Cleanser – always start fresh
2️⃣ Toner – optional but helpful!
3️⃣ Serum – target your skin goals
4️⃣ Moisturizer – lock in hydration
5️⃣ Sunscreen – non-negotiable in the morning ☀️ ...",
"hashtags": ["#SkincareForBeginners", "#GlowingSkin101", "#SkincareRoutine", "#SkincareTips", "#SkincareMadeEasy"],
"publishedAt": "2025-05-29T13:32:37Z",
"editTime": "2025-05-29T13:32:37Z",
"statistics": { "likesCount": 11782, "savedCount": 12509, "commentsCount": 66, "viewsCount": 515421 },
"galleryImages": [
{ "src": "https://p16-lemon8-sign-sg.tiktokcdn.com/...1080:0.webp", "alt": "", "width": 640, "height": 853 }
],
"imageText": ["Natura VDRATION skincare for CREME beginners GRADUAL SELF-TAN FACIAL CRÈME ADVANCED HYDRATION"],
"relatedTopics": [],
"location": null,
"isVideo": false,
"videoData": null,
"searchQuery": "skincare"
},
"allComments": [
{
"id": "7523655998892933943",
"author": "Sample Commenter",
"authorUsername": "sample.commenter",
"authorProfileUrl": "https://www.lemon8-app.com/@sample.commenter?region=us",
"authorTag": null,
"content": "I have a moisturizer that has spf is that good to use?",
"time": "2025-07-05T17:47:48Z",
"likes": 5,
"replyCount": 2,
"replies": [
{
"id": "7525793250217558797",
"author": "Sample Creator",
"authorUsername": "sample.creator",
"authorProfileUrl": "https://www.lemon8-app.com/@sample.creator?region=us",
"tag": "Author",
"content": "yes",
"time": "2025-07-11T12:01:26Z",
"likes": 0
}
]
}
],
"commentStats": { "totalComments": 34, "totalReplies": 7, "previewCommentCount": 3, "complete": true },
"scrapedAt": "2026-10-10T11:15:22Z"
}

authorTag and tag are "Author" when the post's creator wrote the comment or reply.

You can download the dataset in JSON, CSV, Excel, XML or HTML from the Storage tab, or set the input in the Input tab.

How does incremental mode work?

Incremental mode is for scheduled runs of the same search. The scraper keeps a history of the posts it has seen under your State key, in a key-value store in your Apify account named lemon8-search-scraper-incremental, and adds these fields to each row:

changeTypeMeaningReturned by default
NEWNot seen in earlier runs with this state keyYes
UPDATEDTitle, text, likes, saves or comments changed. changedFields lists whichYes
UNCHANGEDSeen before with no changesOnly with Return unchanged posts
REAPPEAREDMarked EXPIRED earlier and found againYes
EXPIREDWas in the keyword's search results before and is gone nowOnly with Return expired posts

You pay only for rows that are returned. A post is marked EXPIRED only when the run read the keyword's whole search result list. Posts that came from related lists never expire, because those lists are recommendations that change between visits.

Use cases

  • Trend research: see which products, outfits, recipes and places Lemon8 creators post about for a keyword, and how many likes and saves each post gets.
  • Influencer discovery: find creators posting about your niche, with follower counts, bios and profile links.
  • Brand monitoring: schedule a daily search for your brand or product and get only new and changed posts with incremental mode.
  • Content and SEO research: collect hashtags, related topics and full post text to plan content for Lemon8, TikTok or Instagram.
  • Comment analysis: export comment threads to study what readers ask about a product or topic.
  • Market research across countries: compare the same keyword in the US, Japan, Thailand or Indonesia.

How it works

  1. The scraper loads the posts Lemon8's website shows for your keyword and region. Popular keywords open Lemon8's curated keyword page, which lists fewer posts.
  2. If you asked for more posts than that, it follows Lemon8's related-post lists for those results until it reaches Post Limit.
  3. With Get Detailed Post Data on, it opens each post for its full data and loads comments and replies until Comment Timeout runs out.
  4. Each post is saved to the dataset and charged as one event.

How much does it cost to scrape Lemon8?

Lemon8 Search Scraper uses pay-per-event pricing. You pay per post saved to the dataset, with or without detailed data and comments. Compute and proxy costs are included in the price, so there are no extra platform usage charges.

EventFree planBronzeSilverGold
post: per Lemon8 post saved$0.00299$0.00279$0.00259$0.00239
Per 1,000 posts$2.99$2.79$2.59$2.39

For example, the prefilled run (10 posts) costs about $0.03 on the Free plan, and 1,000 posts cost $2.99. Use Post Limit or a spending limit to cap a run; the scraper stops as soon as the limit is reached. In incremental mode, unchanged posts are not returned or charged unless you ask for them. Apify's Free plan includes monthly platform credits you can use to try the scraper.

Use Lemon8 Search Scraper with the API

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/lemon8-search-scraper").call(run_input={
"searchTerm": "matcha latte",
"region": "sg",
"limit": 100,
"getDetails": True,
})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["statistics"]["likesCount"], post["title"], post["postUrl"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/lemon8-search-scraper').call({
searchTerm: 'gym outfit',
region: 'au',
limit: 100,
getDetails: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((post) => console.log(post.statistics.likesCount, post.title));

See the API tab for endpoints, the OpenAPI spec and more client examples.

Lemon8 Search Scraper collects only data that Lemon8 shows publicly on its website, without logging in. Web scraping of public data is generally legal, but the results can contain personal data, such as creator names and comments, which is protected by the GDPR in the EU and by similar laws elsewhere. Don't collect personal data unless you have a legitimate reason, and check Lemon8's terms and your local laws before you use the data. If you're unsure, consult a lawyer. Read more in Apify's blog post Is web scraping legal?

Other social media scrapers

ActorWhat it does
TikTok Trends ScraperTrending hashtags, videos, sounds and creators from TikTok Creative Center and Explore
TikTok Video DownloaderDownload TikTok videos as MP4 from post URLs or short links
TikTok Slideshow DownloaderDownload every photo of TikTok slideshow posts
Instagram Reels Search & Trend DiscoverySearch Instagram Reels by keyword with plays, likes and captions
Pinterest Search ScraperScrape Pinterest search results by keyword
Threads Search ScraperScrape public Threads posts by keyword or hashtag
Reddit Search ScraperSearch Reddit posts and comments by keyword

FAQ

How many posts can I get for one keyword? Lemon8 shows about 25–60 posts in the search results for a keyword. Popular keywords such as fashion or skincare open Lemon8's curated keyword page instead, with fewer posts. To go further, the scraper follows Lemon8's related-post lists for those results, up to 5,000 posts per keyword. Rows from those lists have source: "related".

Are the related posts about my keyword? Mostly, but not always. Related posts are what Lemon8 recommends next to the search results, so the further a run goes, the more they can drift from the keyword (a long fashion run can include beauty posts, for example). Filter on source if you only want the search results.

Why are some counts null? Related-post lists carry only the like count, so savedCount, commentsCount and viewsCount are null for those rows unless Get Detailed Post Data is on. With details on, all four counts are filled in from the post page. Posts from Lemon8's curated keyword pages also have no follower count without details.

Why does the US region return posts from Canada? Lemon8's website doesn't return keyword search results for the US region directly, so for us the scraper reads the North American feed that Lemon8 serves to Canada, which lists posts from US creators. The region field on each row is the post's own region as Lemon8 reports it, so you will mostly see us. The Australia, New Zealand and Canada feeds also mostly contain US posts.

Why did my keyword return nothing? Lemon8 hides web search results for some keywords, travel for example, and the log says so. Try a more specific keyword such as japan travel tips. A search with no matching posts still finishes successfully, with an empty dataset.

Why are there fewer comments than commentsCount? The scraper returns the comments and replies Lemon8 shows on its website. commentsCount includes replies, and Lemon8 doesn't show every comment on the web, so replies can also be shorter than replyCount. Which comments Lemon8 shows also depends on the visitor's country: in our tests, a US connection saw 25 of the 77 top-level comments a Malaysian connection saw on one post, while on another post it saw more replies. The default Apify Proxy connects from the US, so you get the comments Lemon8 shows to US visitors. commentStats.complete is false when Comment Timeout ran out before the thread was fully loaded.

Do the image and video links expire? Yes. Lemon8 serves images and videos through signed CDN links with an expiry time in the URL. Download the files soon after the run if you need to keep them.

Can I scrape a Lemon8 profile or a single post? Not with this Actor. Start URLs accepts Lemon8 discover and experience links (/discover/<keyword> and /experience/<keyword>), and other links are skipped with a warning.

Do I need a proxy? Lemon8 limits how many post pages one IP address can open. Keep the prefilled Apify Proxy setting for runs with detailed data. If you leave the proxy empty, the scraper connects directly and moves to Apify Proxy automatically when Lemon8 starts refusing requests.

How do I resume an interrupted run? Start a new run with Resume from run or dataset ID set to the interrupted run's ID. Posts already saved in that run are skipped and not charged again, and they still count toward Post Limit, so the new run saves only the rest.

Can I use it with Make, Zapier or Google Sheets? Yes. Use Apify's integrations or a webhook to send results wherever you need them after each run.

Something doesn't work. What should I do? Open an issue in the Issues tab with your input and run link. Feature requests are welcome there too.