# Likee Scraper (`innovatica-ai/likee-scraper`) Actor

Extracts views, likes, comments, shares, captions, hashtags, music and author data from Likee videos and creator profiles. Accepts video links or creator IDs, returns clean JSON, CSV or Excel with direct video and thumbnail URLs.

- **URL**: https://apify.com/innovatica-ai/likee-scraper.md
- **Developed by:** [Innovatica AI](https://apify.com/innovatica-ai) (community)
- **Categories:**
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Likee Scraper

Extract views, likes, comments, shares, captions, hashtags, music and author data from **Likee** videos and creator profiles. Give it video links or creator IDs; get back clean JSON, CSV or Excel — including direct MP4 and thumbnail URLs.

Built and maintained by [Innovatica.ai](https://innovatica.ai).

> Парсер Likee: сбор просмотров, лайков, комментариев и данных авторов. Экспорт в JSON, CSV, Excel.

![Likee Scraper — give it video links or creator IDs, get back views, likes, comments, shares and direct media URLs](https://innovatica.ai/static/apify/likee-scraper/hero.png?v=2026-08-28)

***

### What you get

Every video returns a flat, stable record:

| Field | Description |
|---|---|
| `postId`, `url`, `shareUrl` | Video identifiers and links |
| `views`, `likes`, `comments`, `shares`, `downloads` | Engagement counters, always numeric |
| `engagementRate` | `(likes + comments + shares) / views`, as a percentage |
| `caption`, `hashtags` | Post text and extracted hashtags |
| `postedAt`, `postedAtTimestamp`, `durationSeconds` | ISO 8601 timestamp, Unix time, video length |
| `videoUrl`, `videoWatermarkedUrl`, `thumbnailUrl` | Direct media URLs |
| `videoWidth`, `videoHeight`, `country`, `language` | Format and origin |
| `musicId`, `musicTitle`, `musicAuthor` | Sound metadata |
| `authorUid`, `authorUsername`, `authorNickname` | Creator identity |
| `authorAvatarUrl`, `authorProfileUrl`, `authorVideoCount` | Creator profile data |
| `source`, `scrapedAt` | `api` or `html`, plus collection timestamp |

***

### Tutorial — three ways to use it

![Three ways to point it at Likee: by video link, by creator ID, or by any one video with includeAuthorVideos](https://innovatica.ai/static/apify/likee-scraper/modes.png?v=2026-08-28)

#### 1. Scrape specific videos

Paste links into **Likee video URLs**:

```
https://likee.video/v/GccqNJ
https://l.likee.video/v/grt8pe
```

Both the `likee.video` and `l.likee.video` short-link formats work. This path returns the richest data, including the **direct MP4 URL** and video duration.

#### 2. Scrape a creator's whole feed

If you know the creator's numeric ID, put it in **Creator IDs**:

```
1274310780
```

Set **Maximum videos per creator** to control depth. Results come back newest-first.

#### 3. Scrape a creator without knowing their ID ← most people want this

Paste **any single video** from that creator and switch on **"Also collect each creator's other videos"**. The Actor reads who posted it and then collects their whole feed automatically.

```json
{
  "videoUrls": [{ "url": "https://likee.video/v/GccqNJ" }],
  "includeAuthorVideos": true,
  "maxVideosPerProfile": 200
}
```

***

### Pricing

Pay per result. You are charged only for videos actually saved to your dataset — videos removed by filters, deleted posts, and failed requests are **not** charged.

Cost control:

- **Maximum results** caps the whole run.
- **Filters** (minimum views/likes/engagement, date range) drop unwanted videos before they are saved.
- **Only return videos not seen before** makes scheduled runs charge only for genuinely new content.

***

### Input example

```json
{
  "videoUrls": [
    { "url": "https://likee.video/v/GccqNJ" }
  ],
  "uids": ["1274310780"],
  "includeAuthorVideos": false,
  "maxResults": 500,
  "maxVideosPerProfile": 100,
  "minViews": 1000,
  "publishedAfter": "2026-01-01",
  "onlyNewResults": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### Output example

![One row per video with 30 stable fields: views, likes, comments, shares, engagement rate and posted date](https://innovatica.ai/static/apify/likee-scraper/output.png?v=2026-08-28)

```json
{
  "postId": "7678797297638207612",
  "url": "https://likee.video/@Purity_mistress/video/7678797297638207612",
  "caption": "Оказывается она была права.",
  "hashtags": ["уборка", "клининг"],
  "views": 922,
  "likes": 23,
  "comments": 0,
  "shares": 0,
  "engagementRate": 2.4946,
  "postedAt": "2026-08-27T19:35:17+00:00",
  "postedAtTimestamp": 1787859317,
  "durationSeconds": 19,
  "videoUrl": "https://video.like.video/eu_live/9uF/11wtjOJcuvQk.mp4",
  "thumbnailUrl": "https://videosnap.like.video/eu_live/9uz/1wvW6000m4dZTiM2KLwNV_4.jpg",
  "videoWidth": 720,
  "videoHeight": 1280,
  "country": "RU",
  "musicTitle": "original sound - Владычица чистот",
  "authorUid": "1274310780",
  "authorUsername": "Purity_mistress",
  "authorNickname": "Владычица чистот",
  "authorProfileUrl": "https://likee.video/@Purity_mistress",
  "source": "api",
  "scrapedAt": "2026-08-28T09:12:44+00:00"
}
```

***

### Use cases

- **Influencer research** — find and size creators before you sign them. Likee's audience is concentrated in Russia, the CIS and the Middle East, where TikTok data alone leaves a gap.
- **Campaign reporting** — track views, likes and engagement rate on sponsored videos over time.
- **Trend and hashtag research** — pull captions, hashtags and sound metadata across a set of creators.
- **Competitive monitoring** — schedule a daily run with *Only return videos not seen before* and get just the new posts.
- **Content archiving** — direct MP4 and thumbnail URLs for videos you have the rights to store.

***

### Proxy

Likee blocks datacenter IPs on its video pages, so **Apify Proxy with the `RESIDENTIAL` group is required when scraping video URLs**. This is prefilled for you.

Creator-ID scraping uses Likee's JSON API, which does **not** require a proxy — so profile scraping is fast and adds no proxy cost. The Actor tries direct requests first and only falls back to the proxy if a request fails.

***

### Recommendations

- Start with `maxResults` around 10–50 to confirm the output shape, then scale up.
- Prefer **Creator IDs** over video URLs for bulk work: it is faster, uses no proxy traffic, and returns exact numeric view counts.
- For monitoring, schedule the Actor daily with `onlyNewResults` enabled.
- Raise concurrency gradually. If you see failures in the log, lower it back.

***

### FAQ

**Can I paste a profile URL like `likee.video/@username`?**
Not currently. Likee renders profile pages entirely in the browser and offers no public way to turn a handle into the numeric creator ID the API needs. The supported route is option 3 above: paste any one video from the creator and enable *"Also collect each creator's other videos"*. Every result also contains `authorUid`, which you can reuse directly as a Creator ID afterwards.

**Why does a video return "not found"?**
Likee returns HTTP 200 with a placeholder page for videos that are deleted, private, or restricted in the proxy's region. The Actor detects this and writes an error record for that URL instead of failing the run. If it happens for everything, check that residential proxy is enabled.

**Are view counts exact?**
Creator-ID scraping returns exact integers from Likee's API. Video-URL scraping reads the count Likee prints on the page, which is rounded above ~1,000 (e.g. `1.07M`). For precise counts at scale, prefer Creator IDs.

**Does one bad URL kill the run?**
No. Failures are recorded per item with an `error` field, and the run continues.

**Does it work for private accounts?**
No. Only public content is accessible.

***

### Legal

This Actor collects **only publicly available data** — content any visitor can see without logging in. It does not access private accounts, does not log in, and does not collect private personal information.

You are responsible for how you use the data collected, including compliance with GDPR and other applicable data-protection laws, and with Likee's terms of service. If you plan to process personal data, make sure you have a valid legal basis. When in doubt, seek legal advice.

***

### Support

Found a bug or need another field? Open an issue on the Actor's **Issues** tab. Maintained by [Innovatica.ai](https://innovatica.ai).

# Actor input Schema

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

Links to individual Likee videos, e.g. https://likee.video/v/GccqNJ. Both likee.video and l.likee.video links work. Returns full details including the direct MP4 URL.

## `includeAuthorVideos` (type: `boolean`):

For every video URL above, look up who posted it and collect that creator's whole feed. This is how you scrape a creator without knowing their numeric ID — just paste any one of their videos.

## `uids` (type: `array`):

Numeric Likee creator IDs, e.g. 1274310780. Every result includes an 'authorUid' field, so scrape one video first if you don't know the ID. Likee profile handles (@username) cannot be looked up — see the README.

## `maxResults` (type: `integer`):

Hard cap on how many videos this run returns in total, across every input. Controls your cost.

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

How many videos to collect from each creator, newest first.

## `maxConcurrency` (type: `integer`):

How many requests run in parallel. Lower this if you see failures.

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

Skip videos below this view count.

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

Skip videos below this like count.

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

Skip videos below this comment count.

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

Skip videos below this share count.

## `minEngagementRate` (type: `integer`):

Skip videos below this engagement rate, as a percentage of views. Engagement is likes + comments + shares.

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

Only keep videos posted on or after this date.

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

Only keep videos posted on or before this date.

## `onlyNewResults` (type: `boolean`):

Remembers which videos previous runs returned and skips them. Use this for scheduled monitoring so you only pay for genuinely new content.

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

Likee blocks datacenter IPs on video pages, so RESIDENTIAL proxy is required when scraping video URLs. Creator-ID scraping works without a proxy and costs you nothing extra.

## Actor input object example

```json
{
  "videoUrls": [
    {
      "url": "https://likee.video/v/GccqNJ"
    }
  ],
  "includeAuthorVideos": false,
  "uids": [
    "1274310780"
  ],
  "maxResults": 100,
  "maxVideosPerProfile": 50,
  "maxConcurrency": 5,
  "onlyNewResults": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `videos` (type: `string`):

One row per Likee video, with views, likes, comments, shares, engagement rate, caption, hashtags, music, media URLs and creator details.

## `overview` (type: `string`):

Browse the scraped videos in a table, download them as JSON, CSV or Excel.

# 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 = {
    "videoUrls": [
        {
            "url": "https://likee.video/v/GccqNJ"
        }
    ],
    "uids": [
        "1274310780"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("innovatica-ai/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 = {
    "videoUrls": [{ "url": "https://likee.video/v/GccqNJ" }],
    "uids": ["1274310780"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("innovatica-ai/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 '{
  "videoUrls": [
    {
      "url": "https://likee.video/v/GccqNJ"
    }
  ],
  "uids": [
    "1274310780"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call innovatica-ai/likee-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,innovatica-ai/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/6PUQkg7Pd4R5SXXWu/builds/51grxrsEuMZef3nlQ/openapi.json
