# Likee Scraper (creator videos and stats) (`lowlanddata/likee-scraper`) Actor

Extract public Likee videos as clean JSON: views, likes, comments, shares, engagement rate, caption, hashtags, music and post date. Many creators or exact video links per run, views and date filters, optional profile row and per-country top creators. No login, no API key. Pay per result.

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

## Pricing

from $2.40 / 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?

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 (creator videos and stats)

Likee is a short-video network, and creator numbers are hard to get out of it: the app shows a feed, not a table. Benchmarking creators, tracking a channel's growth or ranking videos by engagement needs every video as a row, with the counts attached.

Give it Likee IDs (or profile links), or the links of specific videos, and every video comes back as one item: caption, hashtags, views, likes, comments, shares, an engagement rate worked out for you, post date, sound name, country, video size and cover image. Add a profile row per creator for followers and total likes, or pull a country's top creators in one go. No login, no API key, no Likee account. The creator's Likee ID and nickname stay on the row as the byline; avatars, bios, linked social accounts, birthdays and the people a caption mentions are never collected.

### Quick start (30 seconds)

1. Put one or more creators into **creators**, one per line: a Likee ID such as `troomhands`, or a profile link such as `https://likee.video/@troomhands`. The ID is the part after the `@` in the profile address.
2. Click **Start**. That's the whole minimum setup.
3. When the run finishes, open the dataset's **Overview** tab for a clean table, or **Export** it as CSV/Excel/JSON.

Optional knobs: how many videos per creator, a minimum view count, a date window, a profile row per creator, specific video links, and a country whose top creators are added to the run. Any input works on a daily Schedule.

### What you can build with it

- **Benchmark creators by engagement.** Put ten creators in **creators**, keep the last 50 videos each, and sort by `engagementRate` (likes plus comments plus shares, divided by views, as a percentage). You see who gets a reaction per view, not just who has a big audience.
- **Track a channel over time.** Switch on **includeProfile** and run daily on the same creators: `followers`, `following` and `totalLikes` are captured at scrape time, and each video row carries its current views and likes. Diff the snapshots to see growth and which videos still pick up views.
- **Find who is rising in a country.** Set **topCreatorsCountry** to a code such as `BR` or `US` and the actor adds the creators Likee recommends there, in Likee's own order, then reads their latest videos. Rank them yourself by views or engagement.
- **Keep only the videos that took off.** Set **minViews** to `100000` and read a creator's whole history: only the videos past that bar come back, and you pay only for those rows.
- **Look up the exact videos you have.** Paste video links into **videoUrls** and get each one's current views, likes, comments and shares, for a client report or a list of videos you track.
- **Study what travels.** `hashtags`, `musicName`, `country` and `postedAt` are separate columns, so a spreadsheet pivot answers which tags and sounds the best-performing videos share.
- **Feed an AI agent clean data.** Every field is structured and predictable, so an assistant or pipeline can read a creator's last 100 videos directly, with no personal data to scrub first.

### What you get

Each video is one dataset item:

```json
{
  "type": "video",
  "likeeId": "troomhands",
  "nickname": "Troom Troom",
  "postId": "7237052592019851234",
  "postUrl": "https://likee.video/@troomhands/video/7237052592019851234",
  "caption": "#StressOff from #Likee #HelloLikee check it out!",
  "title": null,
  "hashtags": ["HelloLikee", "StressOff", "MyDramaID", "Likee"],
  "mediaType": "video",
  "views": 7476,
  "likes": 497,
  "comments": 18,
  "shares": 12,
  "engagementRate": 7.05,
  "postedAt": "2023-05-25T09:40:13.000Z",
  "musicName": null,
  "country": "US",
  "videoWidth": 720,
  "videoHeight": 1280,
  "coverUrl": "https://videosnap.like.video/eu_live/9uN/1FWtlR_4.jpg?wmk_sdk=1&type=8",
  "imageCount": null
}
```

With **includeProfile** on, each creator also gets one profile row:

```json
{
  "type": "profile",
  "likeeId": "troomhands",
  "nickname": "Troom Troom",
  "profileUrl": "https://likee.video/@troomhands",
  "verified": true,
  "followers": 3505001,
  "following": 28,
  "totalLikes": 3058147
}
```

Field notes, so you know exactly what you are buying:

- `postId` is Likee's video number. It is kept as text because it is longer than a spreadsheet can hold exactly. With `likeeId` it is a stable key, and `postUrl` is the human link.
- `views`, `likes`, `comments`, `shares`, `followers` and `totalLikes` are Likee's own counts at scrape time.
- `engagementRate` is `(likes + comments + shares) / views` as a percentage with two decimals. It is `null` when a video has no views yet.
- `postedAt` is the publication time in UTC. `country` is the country code Likee attaches to the post.
- `hashtags` lists the tags attached to the post, without the `#`. `caption` is the text as published, hashtags included.
- `mediaType` is `video` or `photo`. A photo post has `imageCount` set; its long text is returned as the `caption` and its headline as `title`.
- `coverUrl` is the cover image as Likee serves it at run time. It is a link, not an archive.
- `verified` on a profile row is true when Likee marks the account as a verified or official creator.
- Rows are billed per item, so a creator that cannot be read never appears in the dataset. It is named in the run's status message and in the `CREATOR_REPORT` record of the run's key-value store instead. Video links that could not be read are in `VIDEO_LINK_REPORT`.

### What it does not do

- **No video files.** Likee does not give a logged-out visitor a playable file link, so there is no mp4 URL column and the actor cannot download videos.
- **No short share links, and no hashtag or keyword search.** A video link must be the address of the video page (`likee.video/@<id>/video/<number>`); the short `l.likee.video/v/...` links Likee's app shares are sent to its home page and cannot be read. Likee has no public search and its hashtag lookup did not return data when tested, so everything else starts from a creator: you name the creators, or take a country's top creators, and read their videos newest first.
- **No comments, followers lists or private accounts.** Only the public counts above. A private account is reported as private and nothing else is collected.

### How much does it cost to scrape Likee?

$3.00 per 1,000 rows delivered, pay-as-you-go, no subscription, and you pay per result rather than per hour. Videos and profile rows both count as rows. A run that finds nothing still costs the $0.005 actor start. In plain dollars:

- **100 videos ≈ $0.30**: a daily check on a handful of creators.
- **500 videos ≈ $1.50**: a benchmark across a dozen creators.
- **A 10,000-video crawl ≈ $30**: a long history across many creators.

The price is all-inclusive: your runs' platform usage is covered by it, with no separate compute or proxy charges. The actor reads Likee directly and only falls back to the Apify proxy if the request is blocked, so there is nothing to configure.

Free-plan runs are limited to a sample of 5 items, enough to evaluate the output format against your real creators.

### Not technical? Let your AI assistant set it up

Copy this into ChatGPT, Claude or any AI assistant, fill in the one line, and follow the conversation:

```text
Help me set up the "Likee Scraper" actor on Apify
(https://apify.com/lowlanddata/likee-scraper). Guide me one step at a time.

What I want to learn: [E.G. "which of these five Likee creators gets the most engagement on their last 30 videos"]

Guide me to:
1. Propose my input values: creators (Likee IDs or profile links, one per line;
   the ID is the part after the @ in a profile address), maxVideosPerCreator,
   an optional postedAfter date, includeProfile if I want followers and total likes,
   and maxItems.
2. Check that each creator is public by opening likee.video/@<id> in my browser.
   If it shows videos, the actor can read it.
3. Create a free Apify account (apify.com), open the actor page, paste the values
   into the Input form, and start a run.
4. Set up a daily Schedule in the Apify Console with the same input, plus an email
   or Slack integration so new numbers reach me automatically.
5. Show me how to export results as CSV/Excel, or read them from the API if I code.
6. If the results are what I wanted, remind me at the end to leave a quick rating on the actor page, and to report anything broken or missing on its Issues tab.
```

### Input

| Field                 | Description                                                                                                           |
| --------------------- | --------------------------------------------------------------------------------------------------------------------- |
| `creators`            | Likee IDs or profile links, one per line or comma-separated, e.g. `troomhands` or `https://likee.video/@troomhands`.  |
| `videoUrls`           | Optional. Links of specific videos, one per line, e.g. `https://likee.video/@troomhands/video/7237052592019851234`.   |
| `topCreatorsCountry`  | Optional. A two-letter country code; adds Likee's recommended creators for that country, in Likee's order.            |
| `topCreatorsLimit`    | How many creators to take from that country list, from the top (default 10, at most 100).                             |
| `maxVideosPerCreator` | Videos per creator, newest first. Empty means 20, or every video inside your date window when you set one.            |
| `minViews`            | Optional. Only videos with at least this many views. Skipped videos are not billed and do not count toward the limit. |
| `postedAfter`         | Only videos posted on or after this date (YYYY-MM-DD); stops walking a creator's older history.                       |
| `postedBefore`        | Only videos posted on or before this date (YYYY-MM-DD).                                                               |
| `includeProfile`      | Add one profile row per creator: nickname, verified flag, followers, following, total likes. Default off.             |
| `maxItems`            | Stop after this many rows in total, across all creators (default 500).                                                |
| `proxyConfiguration`  | Optional. Direct by default; the Apify proxy joins on its own if blocked. Set one to force a proxy.                   |

Provide at least one creator, video link or `topCreatorsCountry`. Video links are read first, then creators in the order you list them, then the country list, and `maxItems` counts across all of them. A video that is also in a creator's list is returned once. With `minViews` set, a creator's videos are read newest first until `maxVideosPerCreator` matches are found, so on a creator with a long history and few hits, add a date window. Setting `maxVideosPerCreator` to `0` together with `includeProfile` returns profile rows only. A value that is not a Likee ID, a likee.video profile link or (for `videoUrls`) a video page link is refused up front with the offending names in the message. A creator that cannot be read costs that creator, not the run: the rest are delivered with an honest note in the run status.

### Use it from your code

Run the actor and get rows straight back with one HTTP call (fine for scoped runs up to ~5 minutes):

```bash
curl "https://api.apify.com/v2/acts/lowlanddata~likee-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -X POST -H "Content-Type: application/json" \
  -d '{"creators": ["troomhands"], "maxVideosPerCreator": 50}'
```

Node.js:

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lowlanddata/likee-scraper').call({
  creators: ['troomhands', 'troom_oki_toki'],
  includeProfile: true,
  postedAfter: '2023-01-01',
  maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lowlanddata/likee-scraper").call(
    run_input={"topCreatorsCountry": "US", "topCreatorsLimit": 5, "maxVideosPerCreator": 20})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

Schedules, webhooks and the Make/Zapier/n8n integrations all work out of the box: this is a standard Apify actor.

### Use it with AI agents (MCP)

Claude, Cursor and other MCP-capable agents can run this scraper as a tool through Apify's hosted MCP server: the agent fills in the creators itself, starts the run and reads the results: no glue code.

Claude Code:

```bash
claude mcp add apify --transport http "https://mcp.apify.com?actors=lowlanddata/likee-scraper"
```

Cursor or Claude Desktop (add a custom connector / MCP server with this URL):

```text
https://mcp.apify.com?actors=lowlanddata/likee-scraper
```

Sign in with your Apify account when prompted. Runs are billed to it. Setup details per client: [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp).

Prompts that work once connected:

- "Get the last 50 videos from the Likee creator troomhands and tell me which three had the highest engagement rate."
- "Take the top 10 Likee creators for Brazil, read their last 20 videos each, and list the hashtags the best videos have in common."
- "Pull the Likee profile rows for these creators and compare their followers and total likes."

### Which creators can it read?

Public creators, found by their Likee ID. The ID is the part after the `@` in the profile address: `likee.video/@troomhands` has the ID `troomhands`. An ID Likee does not know is reported as not found, and a private account is reported as private; neither costs anything, and the run carries on with the rest. If Likee is under load and answers "system busy", the actor waits and retries a few times before reporting that creator as rate limited, so you can run it again later.

The country list is Likee's own recommendation, in its order, and it changes over time. Some countries have a short list, and a country without its own list gets Likee's general one, so check the creators you got.

### Is it legal to scrape Likee?

The actor reads the same public data Likee's own website shows to a visitor who is not logged in: a creator's public profile numbers and their public videos' counts. It does not log in, solve CAPTCHAs or touch private accounts, and requests are paced. The creator's Likee ID and nickname stay on each row as its byline. Avatars, bios, linked Instagram or YouTube names, birthdays, the accounts a caption mentions and Likee's internal user numbers are never read, so none of it can reach your dataset, and a test on every build fails if one ever does.

Two honest limits. Captions are the creator's own words, delivered as published: if a caption contains a name, that text is not rewritten. And Likee's terms of use are a contract between you and Likee that limit how its service and content may be used in general terms, so read them against your own use. The guarantee covers the data fields, not what creators choose to publish.

This is not legal advice. Whether your use of the data is allowed under Likee's terms and your jurisdiction's rules is yours to assess.

### Is there a Likee API alternative?

Likee has no public API for creator data. This actor is the practical alternative: the same public counts as structured JSON through one HTTP call (`run-sync-get-dataset-items`), on a schedule, or as an MCP tool for AI agents, with no account to create.

### Does Likee block scrapers?

Not in our runs so far: requests from the Apify platform went through directly, without a proxy. Likee's website loads its data from a plain JSON API with no login, signature or CAPTCHA, so the actor stays inside that: paced requests, direct fetches, load kept low. If the platform's address is ever blocked, the actor switches to the Apify proxy by itself. Under heavy load Likee can answer "system busy"; the actor retries with a short wait and, failing that, tells you which creators to run again.

### How do I monitor a Likee creator?

Put the creator in `creators`, set `postedAfter` to yesterday's date, switch on `includeProfile` for a follower snapshot, and add a daily Schedule in the Apify Console with an email or Slack integration on the runs. The dataset then holds only the new videos with their counts at that moment, plus the creator's current followers. The AI-assistant prompt above walks a non-technical user through exactly this setup.

### FAQ

**Can I scrape a single video by its link?** Yes, put the link of the video page in `videoUrls`, for example `https://likee.video/@troomhands/video/7237052592019851234`. You get that one video's row. Short share links (`l.likee.video/v/...`) cannot be read, because Likee sends them to its home page. A link in `creators` still means the creator, not the video.

**Can I only get videos above a number of views?** Yes, set `minViews`. Videos below it are not returned and not billed. The run reads a creator's videos newest first until it has found enough matches, so combine it with `postedAfter` or `maxVideosPerCreator` to bound how far back it goes.

**Can I search Likee by hashtag or keyword?** No. Likee has no public search, and its hashtag lookup did not return data when tested. The columns `hashtags` and `caption` let you filter the creators you do read.

**Can I download the videos?** No. Likee does not expose a playable file link to logged-out visitors, so the rows carry the cover image and the video's size, not a file.

**Does it read private accounts?** No. A private account is reported as private in the run status and nothing else is collected.

**Why did a creator come back as "not found"?** Likee does not know that ID. Open `likee.video/@<id>` in a browser: the ID is the part after the `@`, and it is not the same as the display name.

**How is the engagement rate worked out?** `(likes + comments + shares) / views`, as a percentage with two decimals. It is `null` for a video with no views.

**Can I get only the newest videos?** Yes, set `postedAfter` to a date. Each creator's walk stops as soon as it reaches older videos, so a daily watch collects exactly the new ones.

**How many videos per creator do I get?** The newest 20 by default, any number you set in `maxVideosPerCreator`, or every video inside your date window when you set one and leave the number empty.

**Can I read a whole country's top creators?** Yes: set `topCreatorsCountry` to a two-letter code. You get Likee's recommended creators for it, in Likee's order, up to `topCreatorsLimit`.

**How fast is it?** Measured on the Apify platform at 256 MB: the default 20 videos from one creator finish in about 5 seconds, 300 videos from one creator in about 32 seconds, and 300 videos across three creators in about 46 seconds. Likee returns up to 100 videos per request and the actor paces its requests, so a run is bounded by Likee's response time rather than by memory.

**How fresh is the data?** Live at run time: every run reads Likee directly. For continuous freshness, schedule the actor.

**Can I export to Excel or CSV?** Yes, every dataset exports as CSV, Excel, JSON or XML from the Apify Console or API.

**Does it work with Make, Zapier or n8n?** Yes, it is a standard Apify actor; all platform integrations, webhooks and schedules apply.

**Do I need a Likee account or API key?** Neither. The data comes from the public pages' own API, and no login is involved.

**Does it collect profile pictures, bios or linked accounts?** No. You get the creator's Likee ID and nickname as the byline, and the counts. Avatars, bios, linked Instagram or YouTube names, birthdays and mentioned accounts are never read.

**Why do two runs show different counts for the same video?** The counts are Likee's own at scrape time, and videos keep collecting views and likes.

**How much does Likee scraping cost here?** $3.00 per 1,000 rows, metered on delivery. A 100-video daily check is roughly $0.30; a failed or empty run costs the $0.005 actor start and nothing per result.

**Can I try it before spending anything?** Yes, a free-plan run returns up to 5 real rows from your creators, enough to check the fields against your pipeline.

**Can an AI agent fetch Likee data through this?** Yes, connect Apify's hosted MCP server and agents like Claude or Cursor can pick creators, run the actor and read the results themselves. Setup is in the MCP section above.

### Related scrapers

More clean-output data sources from the same maker:

- [Bluesky Scraper](https://apify.com/lowlanddata/bluesky-scraper): public posts from the open social network.
- [Telegram Channel Scraper](https://apify.com/lowlanddata/telegram-channel-scraper): posts, views and reactions from public channels.
- [Vinted Scraper](https://apify.com/lowlanddata/vinted-scraper): Europe's largest fashion resale marketplace.

### Troubleshooting

The actor fails fast with the reason in the run's status message:

- **"Not found: ..."**: those IDs are unknown to Likee. Check the spelling against the profile address in your browser.
- **"Private account, nothing collected: ..."**: the creator's account is private, so only that status is reported.
- **"Rate limited by Likee, try again later: ..."**: Likee answered "system busy" even after the retries. The other creators are delivered; run these again later.
- **"Could not read: ..."**: an unexpected answer from Likee for those creators; the rest of the run is delivered normally.
- **"Not a Likee id or profile link"**: a value in `creators` is not valid. Use an ID like `troomhands` or a link like `https://likee.video/@troomhands`.
- **Fewer items than requested on a free plan**: the 5-item free sample cap; run on a paid Apify plan for full results.

### Support

Found an issue or missing a field you need? The fastest route is the actor's **Issues tab** - it is monitored and reports get fixed. For anything private, email **contact@lowlanddata.com**. This actor is actively maintained.

Working well for you? A **rating on this page** takes ten seconds and helps other users find a reliable option. It is also the clearest signal of what we should build next.

# Actor input Schema

## `creators` (type: `array`):

Creators to read, one per line: a Likee ID ("troomhands", "@troomhands") or a profile link ("https://likee.video/@troomhands"). The ID is the part after the @ in the profile address. Optional if you set video links or a top-creators country below. Private accounts and unknown IDs are reported in the run status and cost nothing.

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

Optional. Specific videos to read, one per line, each as the address of its video page, for example <code>https://likee.video/@troomhands/video/7237052592019851234</code>. Every link returns that one video with its counts. Use it alone or next to creators. Short share links (<code>l.likee.video/v/...</code>) cannot be read: Likee sends them to its home page. A video that is gone, or a private account, is reported in the run status and costs nothing.

## `topCreatorsCountry` (type: `string`):

Optional. A two-letter country code such as <code>US</code>, <code>FR</code> or <code>BR</code>. Adds the creators Likee recommends for that country, in Likee's own order, to the creators above. Likee decides the list: some countries have a short one, and countries without their own get its general list.

## `topCreatorsLimit` (type: `integer`):

How many creators to take from the country list above, from the top. Likee lists at most 100.

## `maxVideosPerCreator` (type: `integer`):

Videos to read per creator, newest first. Leave empty for 20, or for every video inside your date window when you set one. Set <code>0</code> together with Include profile to get profile rows only.

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

Optional. Only return videos with at least this many views, from creators and video links alike. Videos below it are left out, do not count toward Max videos per creator and are not billed, so the run reads further back to find enough matches. Add a date window or a Max videos per creator to limit how far back it reads.

## `postedAfter` (type: `string`):

Only include videos posted on or after this date. Creators are read newest-first, so the run stops walking a creator once it reaches older videos. <b>Format: <code>YYYY-MM-DD</code></b> (for example <code>2026-09-08</code>) or a full ISO timestamp such as <code>2026-09-08T14:30:00Z</code>. Slash dates like <code>08/09/2026</code> are refused on purpose: they are read as September in Europe and August in the United States, and this actor will not guess which you meant.

## `postedBefore` (type: `string`):

Only include videos posted on or before this date. <b>Format: <code>YYYY-MM-DD</code></b> (for example <code>2026-09-08</code>) or a full ISO timestamp such as <code>2026-09-08T14:30:00Z</code>. Slash dates like <code>08/09/2026</code> are refused on purpose: they are read as September in Europe and August in the United States, and this actor will not guess which you meant.

## `includeProfile` (type: `boolean`):

Also add one row per creator with nickname, verified flag, followers, following and total likes. A profile row is a result like any video row and counts toward Max results.

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

Stop after this many rows in total, across all creators. Free-plan runs are capped at 5 items. The form starts at 25 for a cheap first run - that is the form's prefill, not a cap on your plan; clear it to use the default of 500.

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

Optional. By default the actor reads Likee directly, which is fastest, and switches to the Apify proxy by itself if Likee blocks the request. Turn on Apify Proxy, or list your own proxy URLs, to route every request through a proxy.

## `reportFailures` (type: `boolean`):

When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. <b>Your input itself, your results and your identity are never sent, and successful runs send nothing at all.</b> Switch this off and the actor behaves exactly the same.

## Actor input object example

```json
{
  "creators": [
    "troomhands"
  ],
  "topCreatorsLimit": 10,
  "includeProfile": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "reportFailures": true
}
```

# Actor output Schema

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

Scraped Likee videos, one JSON object per video (plus profile rows when requested).

# 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 = {
    "creators": [
        "troomhands"
    ],
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lowlanddata/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 = {
    "creators": ["troomhands"],
    "maxItems": 25,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("lowlanddata/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 '{
  "creators": [
    "troomhands"
  ],
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call lowlanddata/likee-scraper --silent --output-dataset

```

## MCP server setup

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