# Likee Scraper & API: Videos, Views, Likes, Hashtags (`scrapewise/likee-scraper`) Actor

Scrape Likee videos without login: all videos of a creator with views, likes, comments, shares and engagement rate, each with its link, video by link, featured creators and trending hashtags by country. Only-new mode for daily schedules.

- **URL**: https://apify.com/scrapewise/likee-scraper.md
- **Developed by:** [Scrapewise Data](https://apify.com/scrapewise) (community)
- **Categories:** Social media, Videos, Automation
- **Features:** Limited permissions
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.40 / 1,000 result delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Likee Scraper: Likee videos, views, engagement and trending hashtags

This Likee scraper collects Likee videos from likee.video without a login. Get every public video of a creator with exact views, likes, comments, shares, engagement rate, caption, hashtags, music and publish date, or paste a video link to get that one video.

Discover creators Likee features in each country and the trending hashtags by country (for example US, Indonesia, India). Filter Likee videos by views, likes or date, and turn on only-new videos for scheduled runs. Export to JSON, CSV or Excel.

### Likee scraper pricing at a glance

| Event | Per 1,000, Free plan | Charged for |
|---|---|---|
| Result delivered | **US$ 4.00** | each unique video, creator summary or hashtag row |

- **28 fields per video** (plus 12 creator fields inside `authorMeta`), **34 fields per creator summary** and
  **12 per trending hashtag**. All of them are in the [field reference](#field-reference).
- **No start fee, no monthly fee.** Error rows, duplicates and videos or creators outside your filters are free.
- **All videos of a profile**, newest first or most viewed first (`sortBy: popular` reads up to 3,000 per profile).
- **Only new videos since the last run** (`onlyNewVideos`), made for daily schedules.
- **Filters:** views, likes, comments, shares, engagement rate, followers, publish date (absolute or `7 days`).
- **Featured creators and trending hashtags by country,** from Likee's own lists.
- In our tests a 500-video profile took 41 seconds and 850 videos from 20 creators took 66 seconds.

### What data the Likee scraper returns

From a cloud test run on 2026-09-28 (`"profiles": ["troomhands"]`, the Troom Troom brand channel):

```json
{
  "type": "video",
  "id": "7237052592019851234",
  "url": "https://likee.video/@troomhands/video/7237052592019851234",
  "caption": "#StressOff from #Likee️ #HelloLikee check it out!",
  "hashtags": ["HelloLikee", "StressOff", "MyDramaID", "Likee️"],
  "createTime": "2023-05-25T09:40:13Z",
  "timestamp": 1685007613,
  "viewCount": 7466,
  "likeCount": 497,
  "commentCount": 17,
  "shareCount": 12,
  "engagementRate": 7.05,
  "coverUrl": "https://videosnap.like.video/eu_live/9uN/1FWtlR_4.jpg?wmk_sdk=1&type=8",
  "width": 720,
  "height": 1280,
  "country": "US",
  "musicMeta": {"id": null, "title": null, "author": null, "isOriginalSound": null},
  "authorMeta": {
    "likeeId": "troomhands",
    "uid": "673826786",
    "nickname": "Troom Troom",
    "url": "https://likee.video/@troomhands",
    "followers": 3505027,
    "following": 28,
    "totalLikes": 3058154,
    "verified": true,
    "verifiedLabel": "Verified Creator",
    "level": 25,
    "privateAccount": false
  },
  "source": "profile:troomhands",
  "scrapedAt": "2026-09-28T22:38:41Z",
  "errorCode": null
}
```

`engagementRate` is (likes + comments + shares) / views x 100. When the video uses a song, `musicMeta` has its id,
title and author (for example `{"id": "4588094", "title": "original sound - Fear And Peace", "author": "Fear And
Peace", "isOriginalSound": true}`).

### What you can do with Likee data

- **Vet an influencer before paying:** Creators mode gives median views, engagement rate, views per follower and
  posts per week over the latest 30 videos, so inflated follower counts stand out.
- **Find creators in a market:** featured creators of a country with `minFollowers`, one summary row each.
- **Track competitors:** schedule their profiles with `onlyNewVideos` and get each new video with its stats.
- **Spot what works:** `sortBy: popular` plus `minEngagementRate` returns a creator's standout videos.
- **Follow trends by country:** trending hashtags with views, posts and rank.

### Likee scraper input

Every field is optional. An empty input returns 20 videos of the public brand profile `troomhands`.

Last 30 days of three profiles (link, handle or numeric uid), videos with at least 1,000 views:

```json
{
  "profiles": ["https://likee.video/@troomhands", "@WooHoo_en", "673826786"],
  "maxVideosPerProfile": 100,
  "sortBy": "latest",
  "publishedAfter": "30 days",
  "minViews": 1000
}
```

The 20 most viewed videos of a creator with engagement of 5% or more:

```json
{ "profiles": ["troomhands"], "sortBy": "popular", "maxVideosPerProfile": 20, "minEngagementRate": 5 }
```

Creators mode for the featured creators of the US and Indonesia:

```json
{ "countries": ["US", "ID"], "resultType": "creators", "maxCreatorsPerCountry": 20 }
```

Trending hashtags only:

```json
{ "countries": ["US", "RU"], "includeTrendingHashtags": true, "maxCreatorsPerCountry": 0 }
```

| Field | What it does |
|---|---|
| `profiles` | Profile links (`likee.video/@handle`), handles with or without `@`, or numeric uids. |
| `videoUrls` | Video links `likee.video/@handle/video/<id>`. Each returns that video with its stats. |
| `countries` | Two-letter codes (US, ID, RU, IN, BR...). Takes the creators Likee features in each country. |
| `maxCreatorsPerCountry` | Featured creators per country (empty = 20, up to 100; 0 = none, for hashtags only). |
| `includeTrendingHashtags` | Adds the trending hashtags of each country (or the US): name, views, posts, rank. |
| `resultType` | `videos` (one row per video) or `creators` (one summary row per profile). |
| `maxVideosPerProfile` | Videos per profile (empty = 50; in Creators mode, the latest 30 are analyzed). 0 = all. |
| `maxItems` | Rows in the whole run (empty or 0 = no total limit). |
| `sortBy` | `latest` (default) or `popular` (reads up to 3,000 videos per profile, most viewed first). |
| `publishedAfter` / `publishedBefore` | Date (YYYY-MM-DD) or relative period (`7 days`, `2 weeks`). |
| `minViews`, `minLikes`, `minComments`, `minShares`, `minEngagementRate` | Skip videos below these values. |
| `minFollowers` | Skip creators below this follower count. |
| `onlyNewVideos` | Only videos not delivered in earlier runs; made for daily schedules (see below). |

#### Monitor Likee creators daily: only new videos

Turn on `onlyNewVideos`, save your creators as a Task and attach a Schedule. The Actor remembers which videos of
each profile it already delivered (in a Key-Value Store in your own account, `likee-scraper-only-new`) and stops
reading a profile at the first video you already have. Every run delivers, and charges, only the videos posted
since; a day with nothing new ends with "No new video since the last run" and costs nothing for results. It also
works for the featured creators of a country. Delete the store to start over.

```json
{ "profiles": ["troomhands", "WooHoo_en"], "maxVideosPerProfile": 50, "onlyNewVideos": true }
```

The option forces the `latest` order and does not apply to Creators mode, which is a fresh snapshot every run.
Without it, `"publishedAfter": "1 day"` on a schedule still stops each profile at that date.

A real hashtag row from a cloud run on 2026-09-28:

```json
{"type": "hashtag", "hashtag": "WindowView", "hashtagId": "6521256422621236646", "viewCount": 11152566,
 "postCount": 2192, "country": "US", "rank": 2, "source": "hashtags:US"}
```

<a id="field-reference"></a>

### Likee field reference

**Video** (`type: video`):

| Field | What it is |
|---|---|
| `id`, `url` | video id and its link |
| `caption`, `title`, `hashtags` | caption text, title (rarely set on Likee), hashtags |
| `createTime`, `timestamp` | publish time (ISO 8601, UTC) and Unix time |
| `viewCount`, `likeCount`, `commentCount`, `shareCount` | exact counts from Likee |
| `engagementRate` | (likes + comments + shares) / views x 100 |
| `coverUrl`, `width`, `height`, `postType` | cover image, video size, Likee post type |
| `country` | the country Likee attaches to the video |
| `musicMeta` | `id`, `title`, `author`, `isOriginalSound` of the sound |
| `videoUrl` | always `null` (see Likee scraper limitations) |
| `authorMeta` | `likeeId`, `uid`, `nickname`, `url`, `avatar`, `followers`, `following`, `totalLikes`, `verified`, `verifiedLabel`, `level`, `privateAccount` |
| `featuredCountry`, `featuredRank`, `featuredListIsDefault` | on videos of featured creators: country list, position, and whether it was Likee's default (US) list |

**Creator summary** (`type: creator`, Creators mode): `likeeId`, `uid`, `nickname`, `url`, `avatar`, `followers`,
`following`, `totalLikes`, `verified`, `verifiedLabel`, `level`, `privateAccount`, and over the latest videos
analyzed: `videosAnalyzed`, `avgViews`, `medianViews`, `avgLikes`, `avgComments`, `avgShares`,
`avgEngagementRate`, `viewsPerFollower`, `postsPerWeek`, `lastPostAt`, `oldestAnalyzedPostAt`, `topVideoUrl`,
`topVideoViews`, `topVideoCaption`; from `countries` also `featuredCountry`, `featuredRank`,
`featuredListIsDefault`. The dataset has a **Creators** view.

**Trending hashtag** (`type: hashtag`): `hashtag`, `hashtagId`, `viewCount`, `postCount`, `coverUrl`, `country`,
`rank`.

Every row also has `source`, `scrapedAt`, `errorCode` and `error`.

#### Error rows (never charged)

| errorCode | Meaning |
|---|---|
| `INVALID_INPUT` | A field has a wrong value (the message says which). |
| `INVALID_URL` | Not a Likee profile or video link, or a share link (`l.likee.video/v/...`), which opens only in the app. |
| `NOT_FOUND` | The profile does not exist. |
| `PROFILE_REMOVED` | Likee removed the account. |
| `PRIVATE_ACCOUNT` | The account is private; its videos are not public. |
| `NO_VIDEOS` | The profile has no public videos. |
| `VIDEO_NOT_FOUND` | The video is not in the creator's profile any more (deleted or hidden). |
| `NO_RESULTS` | Likee has no featured creators or trending hashtags for that country. |
| `BLOCKED` | Likee did not answer after several attempts; run again. |
| `NOT_REACHED` | The run timeout arrived before this item. |

### Likee scraper pricing examples

- **US$ 4.00 per 1,000 results** (US$ 0.004 each): a video, a creator row or a hashtag row. No fee per run.
- 500 videos of one creator = US$ 2.00. 40 featured creators in Creators mode = US$ 0.16.
- A daily schedule on 10 creators that post once a day, with `onlyNewVideos`: about US$ 0.04 a day.
- You can set a maximum cost per run in Apify: the Actor stops when the limit is reached and keeps what it saved.

### Integrations, scheduling and AI agents

Video guides from Apify: [how to schedule an Actor](https://www.youtube.com/watch?v=1jI7WcVQmwM) and [how to connect it to other apps](https://www.youtube.com/watch?v=bNACk1_S_6w).

- **Schedule** a Task daily in [Apify schedules](https://docs.apify.com/platform/schedules) with `onlyNewVideos`.
- **Export** as JSON, CSV, Excel or XML, or read the dataset from the [Apify API](https://docs.apify.com/api/v2).
- **Connect** it to Make, n8n, Zapier, Google Sheets or a webhook through
  [Apify integrations](https://docs.apify.com/platform/integrations).
- **AI agents:** the Actor works as a tool through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp)
  in Claude, ChatGPT, Cursor and other MCP clients, for example "compare the median views of these five Likee
  creators".
- From code: call `scrapewise/likee-scraper` with the Apify JavaScript or Python client.

### Good to know

- Profiles are read from the newest video back.
- The proxy is included: you pay only the per-result price above.
- Public creator data only: Likee ID, uid, display name, avatar, followers, following, total likes, level and
  badge. Bio, links to other social networks, birthday, mentions and comments are **never** collected, and any
  email address, phone number or WhatsApp/Telegram link written in a caption or name is replaced by
  `[contact removed]`.

### Likee scraper limitations

- **No MP4 link.** Likee does not give the video file to web visitors, so `videoUrl` is always null.
  Covers, stats and captions are complete.
- **No keyword search, no hashtag feeds, no "popular" feed.** Likee switched those features off on the web for everyone
  (they answer "system busy"). Start from profiles, video links or countries.
- **No video duration.** Likee does not return it on the web.
- Video links need the creator's handle (`likee.video/@handle/video/<id>`). App share links (`l.likee.video/v/...`)
  only redirect to Likee's home page on the web.
- Countries without their own featured list get Likee's default list (the US one); those rows have
  `featuredListIsDefault: true`. Trending hashtags are Likee's own recommended list and can include older
  campaigns.

### Likee scraper FAQ

**Do I need a Likee account?** No. Everything comes from Likee's public web data, without login.

**Is there an official Likee API?** Not for this data. Likee does not offer a public API for reading other
creators' videos and stats. This Actor reads Likee's public web data with no account and returns views, likes,
comments, shares, engagement rate and creator stats per video.

**How do I get only the videos posted since my last run?** Turn on `onlyNewVideos` and schedule the Actor: each
run returns, and charges, only videos not delivered before.

**Can I get a creator's most viewed videos?** Yes: `"sortBy": "popular"` reads up to 3,000 videos of each profile
and returns the most viewed first.

**How do I find Likee influencers in a country?** Use `countries` with `resultType: creators`. Add `minFollowers`
to skip small accounts.

**Are the view counts rounded?** No. Views, likes, comments and shares are the exact numbers Likee returns.

**Something broke or a field is missing?** Open an issue on the Actor page.

### Related scrapers

- [Kwai Scraper](https://apify.com/scrapewise/kwai-scraper): Kwai videos, creators, hashtags and search.
- [TikTok Transcript Scraper](https://apify.com/scrapewise/tiktok-transcript): TikTok captions and transcripts with views and likes.
- [Bilibili Scraper](https://apify.com/scrapewise/bilibili-scraper): Bilibili videos, comments, channels and stats.
- [Kick.com Scraper](https://apify.com/scrapewise/kick-scraper): Kick streamers, live streams, VODs and clips.

### Changelog

- **16 Oct 2026:** field reference for every row type, more input examples and an integrations section in this page.
- **4 Oct 2026:** `onlyNewVideos` for daily schedules: each run delivers and charges only videos not delivered before.
- **0.1 (28 Sep 2026):** first version. Profiles (link, handle or uid), video links, featured creators and
  trending hashtags by country, Creators mode, latest or popular order, date, views, likes, comments, shares,
  engagement and follower filters.

Independent tool, not affiliated with Likee or BIGO.

# Actor input Schema

## `profiles` (type: `array`):

Likee creators, one per line: profile link (https://likee.video/@troomhands), handle with or without @ (troomhands, @troomhands) or numeric uid. Each profile returns its videos, newest first (or most viewed first with 'Sort by: Most viewed'), with views, likes, comments, shares, music, hashtags and links. Each row is charged once as 'Result delivered'.

## `videoUrls` (type: `array`):

Likee video links, one per line, in the form https://likee.video/@handle/video/<id>. The Actor finds each video in its creator's profile and returns it with its stats.

## `countries` (type: `array`):

Two-letter country codes, one per line, for example US, ID, RU, IN or BR. For each country the Actor takes the creators Likee features there and returns their videos, or one row per creator in 'Creators' mode. Countries without their own list return Likee's default list (flagged as featuredListIsDefault).

## `maxCreatorsPerCountry` (type: `integer`):

How many featured creators to take from each country, in Likee's order, from 0 to 100. Empty = 20. 0 = no creators (only the trending hashtags, if turned on).

## `includeTrendingHashtags` (type: `boolean`):

Off (default). On: adds one row per trending hashtag in each country above (or in the US when no country is set) with hashtag name, total views and number of posts. Likee shows 1 to 50 per country (in tests: US 8, Indonesia 1, Russia 50). Each hashtag row is charged like a video.

## `resultType` (type: `string`):

Videos (default): one row per video with its stats. Creators: one row per profile with followers, total likes, verified badge, plus averages and medians over its latest videos (views, likes, engagement rate, posts per week, best video), good for influencer shortlists. Same price per row.

## `maxVideosPerProfile` (type: `integer`):

Videos returned per profile, for example 20; in 'Creators' mode, the number of latest videos used for the averages. Empty = 50 (30 in 'Creators' mode, and no cap per profile when 'Max items' is set). 0 = all videos of the profile.

## `maxItems` (type: `integer`):

Stop after this many rows in the whole run, across all profiles, links and countries, for example 200. Empty or 0 = no total limit. You pay per row delivered, so this is your cost cap.

## `sortBy` (type: `string`):

Latest first (default, Likee's order): reads each profile from the newest video back. Most viewed first: reads up to 3,000 videos of each profile and returns the most viewed first; slower, same price per row.

## `publishedAfter` (type: `string`):

Only videos newer than this date (YYYY-MM-DD, for example 2026-09-01) or relative period (7 days, 2 weeks). Use it to collect only new videos on a schedule. With 'Latest first', the Actor stops reading a profile once it passes this date.

## `publishedBefore` (type: `string`):

Only videos older than this date (YYYY-MM-DD) or relative period, for example 30 days. Empty = up to today.

## `minViews` (type: `integer`):

Skip videos with fewer views than this, for example 10000. Skipped videos are not charged. Empty = no minimum.

## `minLikes` (type: `integer`):

Skip videos with fewer likes than this, for example 500. Skipped videos are not charged.

## `minComments` (type: `integer`):

Skip videos with fewer comments than this, for example 20. Skipped videos are not charged.

## `minShares` (type: `integer`):

Skip videos with fewer shares than this, for example 10. Skipped videos are not charged.

## `minEngagementRate` (type: `number`):

Skip videos below this engagement rate, in percent, for example 5: (likes + comments + shares) / views x 100. Skipped videos are not charged.

## `minFollowers` (type: `integer`):

Skip creators with fewer followers than this, for example 100000; useful with featured creators by country. Skipped creators are not charged.

## `onlyNewVideos` (type: `boolean`):

For daily schedules. Remembers which videos of each profile were already delivered (in a named key-value store in your account, 'likee-scraper-only-new') and stops reading a profile at the first one you already have. Skipped videos are not charged. Forces the 'Latest first' order; ignored in Creators mode. Delete the store to start over.

## `proxyConfiguration` (type: `object`):

Apify datacenter proxy is the default and works for Likee. Failed requests are retried. Change it only to use your own proxies.

## Actor input object example

```json
{
  "profiles": [
    "troomhands"
  ],
  "resultType": "videos",
  "maxVideosPerProfile": 20,
  "sortBy": "latest",
  "onlyNewVideos": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsCsv` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profiles": [
        "troomhands"
    ],
    "maxVideosPerProfile": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/likee-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "profiles": ["troomhands"],
    "maxVideosPerProfile": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/likee-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profiles": [
    "troomhands"
  ],
  "maxVideosPerProfile": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapewise/likee-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapewise/likee-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3g1b0StMWY0hcwiGx/builds/Bh4PkvKzsE08rNOG2/openapi.json
