# Lelong Malaysia Scraper: Product Price Monitor (`getascraper/lelong-my-scraper`) Actor

Collect public Lelong Malaysia products with structured prices, stock, sellers, shipping, and change records. Send genuine marketplace data to Google Sheets, Airtable, n8n, or your database.

- **URL**: https://apify.com/getascraper/lelong-my-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Features:** Limited permissions, Single-tenant, Server interface
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.32 / 1,000 product records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## 🛒 Lelong Malaysia Scraper: Product Price Monitor

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;margin-bottom:0">
<tr>
<td colspan="3" style="padding:10px 14px;background:#0F766E;border:none;border-top:3px solid #0F766E;border-left:1px solid #99F6E4;border-right:1px solid #99F6E4;color:#FFFFFF;border-radius:10px 10px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">MARKETPLACE MONITORING SUITE</span>
<span style="color:#FFFFFF;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Collect focused public marketplace signals with bounded runs and safer change tracking.</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border:none;border-left:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-99SM7BaciDgGvEMiV-TuAH07zNQG-unnamed_%2834%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/mourjan-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Mourjan classifieds</a></span><br>
<span style="color:#57534E;font-size:11px">Multi-category public listings</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-KyYnxEXfNgAiGsE9u-TLgd6MjZOe-ym-default-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/yallamotor-cars-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">YallaMotor cars</a></span><br>
<span style="color:#57534E;font-size:11px">Private-beta access validation</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #99F6E4;border-right:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#ECFDF5;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-nnFbMT3C4NCEQ5oQn-pmbwep31mP-unnamed_%2833%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/lelong-my-scraper" style="color:#0F766E;text-decoration:none;font-weight:700;font-size:13px">Lelong Malaysia</a></span><br>
<span style="color:#0F766E;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;min-width:100%;table-layout:fixed;margin:0;margin-top:0;margin-bottom:0">
<tbody>
<tr style="width:100%">
<td style="width:100%;padding:24px 28px;background:#ECFDF5;border:1px solid #99F6E4;border-top:none;color:#1C1917">
<span style="font-size:23px;font-weight:800;line-height:1.3;color:#1C1917">Build a current Malaysia product-price view without copying catalog pages by hand.</span><br>
<span style="font-size:15px;line-height:1.6;color:#334155">Collect genuine public Lelong product IDs, MYR prices, stock, seller, shipping, image, and change fields for resellers, analysts, and catalog workflows.</span>
</td>
</tr>
</tbody>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;min-width:100%;table-layout:fixed;margin:0;margin-top:0">
<tbody>
<tr style="width:100%">
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;border-right:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#0F766E">🧾 Real product rows</span><br>
<span style="font-size:12px;color:#475569">Keep public product IDs, titles, prices, and currencies instead of a list of navigation links.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;border-right:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#0F766E">🏷️ Variant-safe prices</span><br>
<span style="font-size:12px;color:#475569">Each visible variant keeps its own identity and price when the source provides both.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;border-right:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#0F766E">📦 Seller and shipping</span><br>
<span style="font-size:12px;color:#475569">Retain public seller and destination-specific shipping context when it is available.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#0F766E">🔄 Focused changes</span><br>
<span style="font-size:12px;color:#475569">Reuse a monitor key to emit new, price, availability, update, and safe-removal events.</span>
</td>
</tr>
</tbody>
</table>

Lelong Malaysia Scraper turns public [Lelong Malaysia](https://www.lelong.com.my/) product pages, category pages, and keyword results into structured marketplace records. It is designed for price checks, seller comparisons, product research, and recurring catalog monitoring without treating missing values as made-up data.

### 🔎 What this Actor does

Choose one source mode at a time: keyword search, category URLs, or direct product URLs. The Actor follows only the selected scope, enforces a total item cap across every source, and produces data fields only when the public page supplies them.

A verified Cloud run returned real product records rather than site-navigation links, including product ID, MYR price, stock, seller, and shipping fields. Product details are optional, while public contacts stay off unless you explicitly request them.

### 👥 Who is this for?

- **I am a Malaysia reseller** who needs a clean view of comparable products, prices, stock, and sellers before I update an offer.
- **I am a catalog or market analyst** who needs dated, source-linked product records for a spreadsheet, database, or dashboard.
- **I am an automation builder** who wants a focused change feed for Google Sheets, Airtable, n8n, or a custom workflow.
- **I am a sourcing team member** who needs variants to remain separate so a cheap option does not overwrite the parent product price.

### 🧭 How it works

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #99F6E4;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Start with one useful scope</span><br>
<span style="font-size:12px;color:#57534E">Enter keywords, public category URLs, or known product URLs.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #99F6E4;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Keep the run focused</span><br>
<span style="font-size:12px;color:#57534E">Choose detail depth, a total item limit, and polite request pacing.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #99F6E4;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export current records or changes</span><br>
<span style="font-size:12px;color:#57534E">Reuse a stable monitor key when you want later price or availability updates.</span>
</td>
</tr>
</table>

```json
{
    "sourceMode": "keywordSearch",
    "keywords": ["toyota vios"],
    "detailLevel": "productDetails",
    "maxItems": 50,
    "maxPagesPerSource": 3
}
```

### ⚙️ Input

| Field                                                                                                                                        | Type                   | When to use it      | What it controls                                                                                             |
| -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------ |
| <code>sourceMode</code>                                                                                                                      | enum                   | Every run           | Choose <code>keywordSearch</code>, <code>categoryUrls</code>, or <code>productUrls</code>. Do not mix modes. |
| <code>keywords</code>                                                                                                                        | array of text          | Keyword search      | Add one to five product terms.                                                                               |
| <code>categoryUrls</code>, <code>productUrls</code>                                                                                          | array of URLs          | URL modes           | Add one to twenty public Lelong category or product pages.                                                   |
| <code>category</code>, <code>minPrice</code>, <code>maxPrice</code>, <code>condition</code>, <code>sellerType</code>, <code>sortOrder</code> | text, number, or enum  | Keyword search      | Narrow the public search results when the source supports the value.                                         |
| <code>detailLevel</code>, <code>includeVariants</code>, <code>reviewDetailLevel</code>                                                       | enum or boolean        | Any run             | Choose product-page depth, variant rows, and public review detail.                                           |
| <code>deliveryPostcode</code>, <code>includeContacts</code>                                                                                  | text or boolean        | Optional enrichment | Request destination shipping context or explicitly allow public contacts. Contacts default to off.           |
| <code>blockedResponsePolicy</code>                                                                                                           | enum                   | Source reliability  | Keep a blocked or failed source incomplete so it cannot create a false removal.                              |
| <code>maxItems</code>, <code>maxPagesPerSource</code>, <code>maxDetailPages</code>, <code>maxConcurrency</code>, <code>requestDelayMs</code> | integer                | Every run           | Keep collection finite. <code>maxItems</code> is the total cap across all selected sources.                  |
| <code>runMode</code>, <code>monitorScope</code>, <code>emitUnchanged</code>                                                                  | enum, text, or boolean | Recurring checks    | Use <code>changes</code> with one stable monitor scope. A monitor scope is required in changes mode.         |

### 📦 Output

Each real product or variant is a separate record. Stable source IDs are preferred; a canonical URL is an explicitly labeled fallback. The Actor omits missing values rather than filling them with placeholders.

```json
{
    "recordType": "product",
    "sourceId": "221826664",
    "productId": "221826664",
    "title": "Arospeed Anti-Heat Coated TOYOTA VIOS 07 Air Ram System",
    "price": 368,
    "currency": "MYR",
    "availability": "InStock",
    "stock": 20,
    "seller": {
        "name": "AUTOBAGS"
    }
}
```

| Fields                                                                                                                                                | What they mean                                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| <code>sourceId</code>, <code>identityType</code>, <code>productId</code>, <code>variantId</code>, <code>canonicalUrl</code>, <code>sourceUrl</code>   | Public identity and source context.                                |
| <code>title</code>, <code>description</code>, <code>sku</code>, <code>category</code>, <code>brand</code>, <code>model</code>, <code>condition</code> | Product details when publicly shown.                               |
| <code>price</code>, <code>listPrice</code>, <code>discount</code>, <code>currency</code>                                                              | Observed product-price context.                                    |
| <code>availability</code>, <code>stock</code>, <code>variants</code>, <code>images</code>, <code>reviews</code>                                       | Public stock, variant, image, and review information when present. |
| <code>seller</code>, <code>shipping</code>, <code>viewCount</code>, <code>soldCount</code>                                                            | Public seller, delivery, and marketplace signals when present.     |
| <code>status</code>, <code>changeType</code>, <code>changes</code>, <code>observedAt</code>, <code>firstSeenAt</code>, <code>lastSeenAt</code>        | Current status and scoped monitoring history.                      |

### 🗂️ Dataset views

The dataset keeps three focused views—no hidden fourth view or diagnostic export.

| View                                         | Use it for                                                                    |
| -------------------------------------------- | ----------------------------------------------------------------------------- |
| <code>overview</code> — Product Overview     | A compact product, price, availability, seller, URL, and observed-time table. |
| <code>pricing</code> — Commerce Details      | Product IDs, variants, pricing, seller, shipping, and product media.          |
| <code>monitoring</code> — Monitoring Changes | New, updated, price, availability, and safe-removal events.                   |

### 💰 Pricing

Pricing is pay per result. Empty runs cost nothing, and there are no subscriptions. Keep the limits close to the amount of public marketplace data you actually need.

### ⭐ Did this save you a manual catalog check?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#ECFDF5;border:1px solid #99F6E4;border-left:5px solid #0F766E;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">A rating helps other Malaysia marketplace teams find structured product data.</span><br>
<span style="font-size:14px;color:#57534E">Tell them which product, price, stock, or change workflow made the Actor useful.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0F766E;border:1px solid #0F766E;border-left:5px solid #0F766E;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#FFFFFF">
<a href="https://apify.com/getascraper/lelong-my-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🧠 Tips and limitations

- Use the same monitor key only for the same source scope. Changing the sources creates a different monitoring question.
- Shipping is returned only when a public page supports the requested postcode.
- Variant prices stay on their own records. They are never promoted to the parent product.
- A blocked or incomplete source is unknown, not a removal.
- This independent tool collects public information only. Use it in line with Lelong Malaysia's terms and applicable law.

### ❓ FAQ

#### Does it return product data or just links?

It returns product records. A current verified Cloud run produced public product IDs, MYR prices, stock, seller, shipping, and source fields rather than navigation links.

#### How do price and availability monitoring work?

Run a snapshot first. Then choose <code>changes</code>, keep the same source scope, and reuse the same monitor key. Unchanged active records stay out of the output unless you enable <code>emitUnchanged</code>.

#### Are public contacts included automatically?

No. <code>includeContacts</code> defaults to false. When you enable it, only source-published public contact values may be returned.

#### Can I collect the full Lelong catalog in one run?

No. Use focused keywords, category URLs, or known product URLs. The finite limits keep each run predictable and prevent one broad request from becoming an unbounded crawl.

### 🔗 Other actors

- [Mourjan classifieds scraper and monitor](https://apify.com/getascraper/mourjan-scraper) ↗ — Public listings across property, cars, jobs, and services.
- [Mahally Scraper](https://apify.com/getascraper/mahally-scraper) ↗ — Products, stores, and specials from Mahally.
- [Mahally Price Monitor](https://apify.com/getascraper/mahally-price-monitor) ↗ — Track public product price movement in Saudi Arabia.
- [Trendyol Price Monitor](https://apify.com/getascraper/trendyol-price-monitor) ↗ — Watch public Turkish product price and stock signals.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/lelong-my-scraper/changelog.md

# Actor input Schema

## `sourceMode` (type: `string`):

Choose a keyword search, category URL collection, or known product URLs.

## `keywords` (type: `array`):

One to five product terms used in keyword search mode.

## `categoryUrls` (type: `array`):

Provide one to 20 public Lelong category URLs for category URL mode.

## `productUrls` (type: `array`):

Provide one to 20 public Lelong product URLs for product URL mode.

## `category` (type: `string`):

Optional category identifier for keyword searches.

## `minPrice` (type: `number`):

Optional inclusive lower price filter for keyword searches.

## `maxPrice` (type: `number`):

Optional inclusive upper price filter for keyword searches.

## `condition` (type: `string`):

Condition preference when shown by the source.

## `sellerType` (type: `string`):

Seller preference when shown by the source.

## `sortOrder` (type: `string`):

Ordering preference for keyword search results.

## `blockedResponsePolicy` (type: `string`):

Blocked or failed sources remain incomplete and never create false removal events.

## `deliveryPostcode` (type: `string`):

Optional Malaysian postcode for destination-specific shipping when the source supports it.

## `detailLevel` (type: `string`):

Choose product detail pages or discovered listing URLs only.

## `includeVariants` (type: `boolean`):

Return separate rows for public variant IDs and keep each variant price-specific.

## `reviewDetailLevel` (type: `string`):

Choose a review summary or the available public review detail.

## `includeContacts` (type: `boolean`):

Return source-published phone or email links only when explicitly enabled.

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

Total product and variant record cap across all sources.

## `maxPagesPerSource` (type: `integer`):

Maximum keyword or category pages to inspect for each source.

## `maxDetailPages` (type: `integer`):

Maximum product pages to request, capped by Maximum Items at runtime.

## `runMode` (type: `string`):

Snapshot returns current records. Changes returns new, changed, and safe lifecycle events.

## `monitorScope` (type: `string`):

Stable name for a recurring Changes run. Required when Run Mode is Changes.

## `emitUnchanged` (type: `boolean`):

Include unchanged active records in Changes mode.

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

Bounded number of public HTTP requests processed at once.

## `requestDelayMs` (type: `integer`):

Delay before each public HTTP request.

## Actor input object example

```json
{
  "sourceMode": "keywordSearch",
  "keywords": [
    "toyota vios"
  ],
  "categoryUrls": [],
  "productUrls": [],
  "category": "",
  "condition": "all",
  "sellerType": "all",
  "sortOrder": "relevance",
  "blockedResponsePolicy": "failSource",
  "deliveryPostcode": "",
  "detailLevel": "productDetails",
  "includeVariants": true,
  "reviewDetailLevel": "summary",
  "includeContacts": false,
  "maxItems": 50,
  "maxPagesPerSource": 3,
  "maxDetailPages": 50,
  "runMode": "snapshot",
  "monitorScope": "",
  "emitUnchanged": false,
  "maxConcurrency": 3,
  "requestDelayMs": 300
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

## `monitorState` (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 = {
    "sourceMode": "keywordSearch",
    "keywords": [
        "toyota vios"
    ],
    "categoryUrls": [],
    "productUrls": [],
    "category": "",
    "condition": "all",
    "sellerType": "all",
    "sortOrder": "relevance",
    "blockedResponsePolicy": "failSource",
    "deliveryPostcode": "",
    "detailLevel": "productDetails",
    "includeVariants": true,
    "reviewDetailLevel": "summary",
    "includeContacts": false,
    "maxItems": 50,
    "maxPagesPerSource": 3,
    "maxDetailPages": 50,
    "runMode": "snapshot",
    "monitorScope": "",
    "emitUnchanged": false,
    "maxConcurrency": 3,
    "requestDelayMs": 300
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/lelong-my-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 = {
    "sourceMode": "keywordSearch",
    "keywords": ["toyota vios"],
    "categoryUrls": [],
    "productUrls": [],
    "category": "",
    "condition": "all",
    "sellerType": "all",
    "sortOrder": "relevance",
    "blockedResponsePolicy": "failSource",
    "deliveryPostcode": "",
    "detailLevel": "productDetails",
    "includeVariants": True,
    "reviewDetailLevel": "summary",
    "includeContacts": False,
    "maxItems": 50,
    "maxPagesPerSource": 3,
    "maxDetailPages": 50,
    "runMode": "snapshot",
    "monitorScope": "",
    "emitUnchanged": False,
    "maxConcurrency": 3,
    "requestDelayMs": 300,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/lelong-my-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 '{
  "sourceMode": "keywordSearch",
  "keywords": [
    "toyota vios"
  ],
  "categoryUrls": [],
  "productUrls": [],
  "category": "",
  "condition": "all",
  "sellerType": "all",
  "sortOrder": "relevance",
  "blockedResponsePolicy": "failSource",
  "deliveryPostcode": "",
  "detailLevel": "productDetails",
  "includeVariants": true,
  "reviewDetailLevel": "summary",
  "includeContacts": false,
  "maxItems": 50,
  "maxPagesPerSource": 3,
  "maxDetailPages": 50,
  "runMode": "snapshot",
  "monitorScope": "",
  "emitUnchanged": false,
  "maxConcurrency": 3,
  "requestDelayMs": 300
}' |
apify call getascraper/lelong-my-scraper --silent --output-dataset

```

## MCP server setup

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