# Likee Scraper API (`cleanscrape/likee-scraper`) Actor

Export Likee posts or read the comments behind the counts. Add public profile or video links to collect captions, views, likes and comment text in CSV, Excel or JSON. $1.95 per 1,000 results; no startup fee or Likee login. Maintained by CleanScrape.

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

## Pricing

from $1.56 / 1,000 videos

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 API

Export the posts you want to review, or read what people are saying in their comments. Add public Likee profile or video links and download the results as CSV, Excel or JSON.

Choose **Videos** for captions, publish dates and engagement counts. Choose **Comments** for the actual comment text, not just a total. You can collect comments from a single video or sample them across a creator's recent posts.

No Likee account, cookies or separate source API key is needed. This is an independent tool, maintained by CleanScrape.

### Watch the walkthrough

Let's use Likee's official US account as an example: list its recent videos, then read the comments on its most-discussed post. Use your own creator or video links for another project.

https://www.youtube.com/watch?v=GnxEDPMfU\_A

### Start with a small run

1. The form opens with **@likee\_usa**, Likee's official US account, so you can try it as it is. Replace it with the public profile or video you want to check: copy its link from Likee or type the creator's @handle.
2. Choose **Videos** or **Comments**.
3. Set **Maximum results** and start the run.

You can paste several entries on separate lines. A missing `https://` on a normal profile link is fine. There is no need to find an internal creator or video ID.

For your first run, try 10 videos from one public account. Open **Results**, then download CSV, Excel or JSON. The default table includes the caption for videos or the comment text for comments. Separate **Videos** and **Comments** views are also available.

### Two ways to use it

#### Review a set of recent posts

Suppose you want to review how an account's recent posts have performed. Paste that account's profile link, choose **Videos** and set **Maximum results** to **10**. The table puts each caption beside its publish date, views, likes, comment count and shares.

Sort the export to find posts worth a closer look. The counts reflect the time of collection; they do not show how much engagement a post gained during a particular period.

#### Read the comments on a video

Suppose a post mentions a product and you want to read the questions people ask about it. In Likee, use **Share > Copy link** on that video. Paste the link here, choose **Comments** and start with **20** results.

Each row contains the original comment text, its date and likes, with the video and creator alongside it. You can read the export or search it for a word of interest. The Actor does not classify opinions or generate an AI summary.

You can also use a creator handle in Comments mode. The Actor checks that creator's recent videos and collects their available public comments. **Videos per creator** controls how many videos it checks; **Comments per video** limits collection from any one video. **Maximum results** is the total for the entire run, not per creator.

### Inputs

| Setting | What it does |
| --- | --- |
| Creators or video links | Handles, profile links or video Share links. Up to 50 different inputs. |
| What to collect | Videos or Comments. One kind of result per run. |
| Maximum results | Total records to save. Default 20. |
| Videos per creator | Optional. Number of recent videos to check per profile. Default 20. |
| Comments per video | Optional. Comment limit for each video in Comments mode. Default 100. |

Inputs are processed in order. A popular video can fill the total result limit before later inputs are reached. Lower Comments per video when you want a smaller sample from several videos.

To collect more than 20 videos from one creator, raise **Videos per creator** as well as **Maximum results**. Both settings are upper limits, not guarantees of source coverage.

Full `likee.video/@creator/video/POST_ID` links are also accepted. Likee does not always serve these pages directly, so the Actor checks the creator's available feed for that exact video. If it cannot find it within the checked pages, use the ordinary Share link instead. It does not substitute a different video or charge for every intervening video.

### What the output means

#### Videos

| Column | Meaning |
| --- | --- |
| Creator | The requested or verified video creator. |
| Caption | Original video text. |
| Published | Source publish time, when available. |
| Views, Likes, Comments, Shares | Counts supplied by Likee at collection time. |
| Count precision | `exact` for creator-feed integers; `source_display` for share-page labels, which can be rounded. |
| Video link | Public Share link when available. |
| Video file | Direct media URL when the source provides one. It may expire. |

For example, a share page showing `5.90K` likes is not proof of exactly 5,900 likes. The numeric conversion keeps the `source_display` label. Missing fields stay empty; they are not converted to zero.

Some creator feeds do not provide Share links or direct video files. Those fields can be empty even when the caption, counts and video ID are available. The Actor does not invent links or download video files.

#### Comments

| Column | Meaning |
| --- | --- |
| Comment | Original comment text, including its language and line breaks. |
| Author | Public author name supplied with the comment. |
| Published | Source comment time. |
| Likes | Source comment-like count. |
| Creator, Video ID | The video this comment was requested for. |
| Reply | Whether the source includes a reply reference. This does not mean every reply in the conversation is available. |

IDs are text, including long numeric IDs. Keep these columns as text when importing into spreadsheets to avoid rounding.

### Coverage and unavailable inputs

Open the **Run report** to see which inputs were checked, which limits were reached and whether any source data was unavailable.

The report refreshes periodically while a run is active and once more when it finishes. Saved progress is kept separately, so a briefly older report does not mean saved rows have been lost.

Likee sometimes repeats a page or temporarily returns an empty response. The Actor removes duplicate results, follows short pages and retries an unexpected empty first comment page. If a gap remains, it reports the limitation rather than inventing results.

The maximum is a limit, not a promised number of results. A completed run is not a guarantee of a complete history. Private profiles, unavailable videos, hidden comments, source restrictions and changing counters can reduce coverage. Keyword search, hashtag discovery and access to private content are not supported.

### Choose a useful starting point

Two ready-made examples use Likee's own official accounts, so you can see real output before adding your own links:

- [Compare two official Likee accounts](https://apify.com/cleanscrape/likee-scraper/examples/likee-compare-two-creators): the three most recent videos from @likee\_usa and @likee\_pakistan.
- [Read comments on official Likee posts](https://apify.com/cleanscrape/likee-scraper/examples/likee-sample-creator-comments): three comments from each of the two latest @likee\_usa videos.

The same comparison as JSON input:

```json
{
  "targets": ["@likee_usa", "@likee_pakistan"],
  "mode": "videos",
  "videosPerCreator": 3,
  "maxResults": 6
}
```

And a small comment sample:

```json
{
  "targets": ["@likee_usa"],
  "mode": "comments",
  "videosPerCreator": 2,
  "commentsPerVideo": 3,
  "maxResults": 6
}
```

Official accounts can post less often than active creators, so the newest video may be weeks or months old. For other accounts, use these settings:

| What you want to do | Settings to use |
| --- | --- |
| Check a creator's recent posts | Paste a profile link or @handle, choose Videos, and start with 10 results. |
| Compare two creators | Add both handles, choose Videos, set Videos per creator to 3 and Maximum results to 6. |
| Read comments on one post | Paste its Share link, choose Comments, and start with 20 results. |
| Sample comments across a creator's posts | Paste the creator's handle, choose Comments, set Videos per creator to 2 and Comments per video to 3. Use 6 as the total maximum. |

Inputs are processed in order. Maximum results is the total for the run, not a separate allowance for every creator. For a balanced sample, use the per-creator or per-video limit in Optional settings. A post with fewer available comments contributes a smaller sample.

### Pricing

**$1.95 per 1,000 saved videos or comments**, with no startup fee. Platform usage is included in the event price. Videos mode charges for saved videos; Comments mode charges for saved comments, not the videos checked along the way. Failed lookups, duplicate results and run reports do not create result charges.

| Apify tier | Price per 1,000 results |
| --- | --- |
| Free / base price | $1.95 |
| Bronze (10% off) | $1.755 |
| Silver (15% off) | $1.6575 |
| Gold, Platinum and Diamond (20% off) | $1.56 |

At the base price, 10 saved results cost $0.0195, 100 cost $0.195 and 1,000 cost $1.95. Check the Pricing tab for the rate applicable to your account. These examples refer to the Actor's collection price, not unrelated services you connect later.

Start with a small Maximum results and use Apify's maximum run charge when you need a firm spending ceiling. The Actor also bounds source requests and processing time. Results already saved remain available if collection stops.

On a restart, saved progress prevents the same result from being submitted again. If an interruption makes a delivery uncertain, the Actor checks the dataset and preserves an unresolved record under **Recovery** rather than blindly charging it again. Recovery records count toward the requested maximum and are explained in the report.

### Scheduling and API use

Use Apify's API or schedules to run the same inputs again. Each new run collects a fresh snapshot and can return records seen in previous runs. Restart protection applies within one run; this is not a cross-run "only new results" monitor.

The dataset is available through Apify's dataset API and exports. Store your Apify API token in your application's secret or credential settings, never in shared input examples or public links.

### Help and feedback

| What you see | What to try |
| --- | --- |
| Profile not found | Copy the profile link from Likee. The public handle can differ from the display name. |
| Fewer results than requested | Check the Run report and the per-creator or per-video limits. The source may have no more available results. |
| Empty caption, count or link | Likee did not supply that field. Empty is different from zero. |
| You selected a view that does not match the results | Use Results for either mode, or choose the focused Videos or Comments view. |
| Some inputs were not reached | Earlier inputs may have filled Maximum results. Use a smaller per-video sample or separate runs. |
| Likee limited or blocked requests | Wait before trying again with fewer results. The Actor does not use account cookies or bypass access restrictions. |

Open an issue on this Actor or email **contact.cleanscrape@gmail.com**. Include the run link and what you expected. Do not send API tokens or private exports.

If this saved you some work, an honest review helps other users decide whether it fits their needs.

**Disclaimer:** This is an independent CleanScrape tool, not affiliated with, endorsed by or sponsored by Likee or LIKEME PTE. LTD. All trademarks belong to their respective owners. Only public data is supported. You are responsible for using collected data appropriately and respecting applicable rights and requirements.

# Actor input Schema

## `targets` (type: `array`):

Open a public profile or video in Likee and copy its link here. A creator's @handle also works. The example, @likee\_usa, is Likee's official US account. For a video, use Share > Copy link. Add several links on separate lines.

## `mode` (type: `string`):

Videos returns each post with its caption and counts. Comments returns comment text from the chosen videos, or recent videos of the chosen creators.

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

Total to save across all inputs. Start with 10 or 20 to check the output. Fewer results may be available.

## `videosPerCreator` (type: `integer`):

How many recent videos to check for each creator. In Comments mode, these are the videos whose comments are collected. Does not expand a single video link into a whole profile.

## `commentsPerVideo` (type: `integer`):

Only used in Comments mode. Lower this to sample comments from several videos. Maximum results still limits the whole run.

## Actor input object example

```json
{
  "targets": [
    "@likee_usa"
  ],
  "mode": "videos",
  "maxResults": 20,
  "videosPerCreator": 20,
  "commentsPerVideo": 100
}
```

# Actor output Schema

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

No description

## `report` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `recovery` (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 = {
    "targets": [
        "@likee_usa"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cleanscrape/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 = { "targets": ["@likee_usa"] }

# Run the Actor and wait for it to finish
run = client.actor("cleanscrape/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 '{
  "targets": [
    "@likee_usa"
  ]
}' |
apify call cleanscrape/likee-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cleanscrape/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/kA2M9STtsabCZpiFm/builds/ducJKf9LoNiNy4VcL/openapi.json
