# MercadoLibre Phone Number Scraper (`maximedupre/mercadolibre-phone-number-scraper`) Actor

Find public MercadoLibre phone numbers, emails, and seller details from keywords, seller IDs, or listing, seller, and shop URLs. Get country-aware contact rows with source links and listing context.

- **URL**: https://apify.com/maximedupre/mercadolibre-phone-number-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Lead generation, E-commerce, Business
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 contacts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

### 📞 Find public MercadoLibre seller contacts

MercadoLibre Phone Number Scraper helps sales teams, sellers, sourcing teams, and researchers find public phone numbers and emails. Search by keyword, seller ID, or public MercadoLibre URL. Get contact, seller, listing, location, and source details in a dataset.

- Find public phones with **[MercadoLibre Phone Number Scraper](https://apify.com/maximedupre/mercadolibre-phone-number-scraper/examples/mercadolibre-phone-number-scraper)**.
- Use the Actor in workflows with the **[MercadoLibre Phone Number Scraper API](https://apify.com/maximedupre/mercadolibre-phone-number-scraper/examples/mercadolibre-phone-number-scraper-api)**.
- Find seller phone details with **[MercadoLibre Seller Phone Number Scraper](https://apify.com/maximedupre/mercadolibre-phone-number-scraper/examples/mercadolibre-seller-phone-number-scraper)**.
- Collect public seller details with **[MercadoLibre Contact Scraper](https://apify.com/maximedupre/mercadolibre-phone-number-scraper/examples/mercadolibre-contact-scraper)**.
- Save both contact types with **[MercadoLibre Email and Phone Scraper](https://apify.com/maximedupre/mercadolibre-phone-number-scraper/examples/mercadolibre-email-and-phone-scraper)**.
- Build seller contact lists with **[MercadoLibre Business Contact Scraper](https://apify.com/maximedupre/mercadolibre-phone-number-scraper/examples/mercadolibre-business-contact-scraper)**.

#### 📦 Returned data

Each row is one MercadoLibre listing, seller, or shop with at least one public phone number. A row may also include public emails, seller and business names, location, listing details, reputation, and completed sales. Missing details stay empty. Phone numbers are put in international form with the chosen country's calling code.

When the same source item appears again, the Actor saves only its first eligible match. The saved row keeps the first keyword, seller ID, or URL that found it.

#### 🚀 Running the Actor

1. Choose **Keywords**, **Seller IDs**, or **MercadoLibre URLs** as the target.
2. Add values for that target. Other target fields are ignored.
3. Choose the MercadoLibre country.
4. Set a contact limit, or leave it empty to return all available results until the source is exhausted.
5. Start the run and open the dataset.

The Actor opens public MercadoLibre pages without your MercadoLibre login details. It does not find private or login-only contacts, and it does not verify phone ownership, reachability, or consent.

#### ⚙️ Input

| Field | Type | What it does |
| --- | --- | --- |
| `target` | string | Chooses `keywords`, `sellerIds`, or `urls`. Only fields for this target are used. |
| `keywords` | string array | Searches MercadoLibre with one or more product or business terms when `target` is `keywords`. |
| `sellerIds` | string array | Finds public contacts linked to these MercadoLibre seller IDs when `target` is `sellerIds`. |
| `urls` | object array | Opens public MercadoLibre listing, seller, or shop URLs when `target` is `urls`. Each object contains a `url`. |
| `country` | string | Sets the MercadoLibre country and phone calling-code context. |
| `maxItems` | integer | Stops after this many contacts are saved. Leave it empty to return all available results until the source is exhausted. |

This is the public input from the successful default-input beta run:

```json
{
  "target": "keywords",
  "keywords": [
    "EMBER"
  ],
  "country": "MX",
  "maxItems": 1
}
```

#### 📊 Output

| Field | Type | What it does |
| --- | --- | --- |
| `sourceType` | string | Says whether the source is a listing, seller, or shop. |
| `sourceId` | string | MercadoLibre ID for the source item. |
| `sourceUrl` | string | Public page where the contact was found. |
| `discoveryInput` | string | First keyword, seller ID, or URL that found this saved row. |
| `countryCode` | string | Two-letter country code used for the row. |
| `countryCallingCode` | string | Calling code used for phone numbers. |
| `phoneNumbers` | string array | Public phone numbers in international form. |
| `emails` | string array | Public email addresses found on the source page. |
| `sellerId` | string | MercadoLibre seller ID linked to the contact. |
| `sellerName` | string | Public seller name. |
| `businessName` | string | Public business name. |
| `city` | string | City shown for the seller or listing. |
| `state` | string | State or region shown for the seller or listing. |
| `listingId` | string | Linked MercadoLibre listing ID. |
| `listingTitle` | string | Linked listing title. |
| `sellerReputation` | string | Seller reputation level shown by MercadoLibre. |
| `completedSales` | integer | Completed sales count shown for the seller. |

This full row comes from the current beta build:

```json
{
  "sourceType": "shop",
  "sourceId": "lamanchamexico",
  "sourceUrl": "https://lamanchamexico.mercadoshops.com.mx/trilogia-fuego-3-ciudades-de-fuego-espanol-de-marcus-joana-serie-ficcion-vol-30-editorial-crossbooks-mexico-tapa-blanda-edicion-10-en-espanol-2022/p/MLM21063620?pdp_filters=seller_id%3A47562366",
  "discoveryInput": "EMBER",
  "countryCode": "MX",
  "countryCallingCode": "+52",
  "phoneNumbers": [
    "+529221534260"
  ],
  "emails": [],
  "sellerId": "47562366",
  "sellerName": "EMBER Comercializadora y Servicios Especializados",
  "businessName": "EMBER Comercializadora y Servicios Especializados",
  "listingId": "MLM21063620",
  "listingTitle": "EMBER Comercializadora y Servicios Especializados"
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. You pay for each public contact saved to the dataset. A contact row has at least one phone number. Repeated later matches and runs with no saved contacts do not create contact events. Apify platform costs may still apply.

#### 🔌 Integrations

Use the Apify API to run the Actor from code. You can also export the dataset as JSON, CSV, or Excel, send it to other apps, schedule runs, or connect it to workflows.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I use the MercadoLibre phone number scraper API?

Yes. Use the Apify API to start runs, pass public input, check run status, and read dataset rows.

##### Does it need a MercadoLibre account?

No. It reads public MercadoLibre pages and does not ask for your MercadoLibre login details.

##### Does every seller have a phone number or email?

No. The Actor saves a contact only when it finds a public phone number. Emails and other seller details are included only when found.

##### What happens when some targets cannot be opened?

The Actor can keep contacts found from other targets. A failed or incomplete target does not erase contacts already saved.

##### Are the phone numbers verified?

They are put in international form with country context, but the Actor does not prove ownership, reachability, consent, or that someone will answer.

##### Can it scrape any website?

No. It is made for public MercadoLibre listing, seller, and shop pages.

### 📝 Changelog

#### 0.0: Initial release

- Find public MercadoLibre seller phone numbers, emails, and seller details from keywords, seller IDs, or listing, seller, and shop URLs.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~mercadolibre-phone-number-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [MercadoLibre Search Scraper](https://apify.com/maximedupre/mercado-libre-search-scraper) — collect product, price, seller, shipping, and ranking data from MercadoLibre searches.
- [Google Maps Phone Number Scraper](https://apify.com/maximedupre/google-maps-phone-number-scraper) — build public business phone lists from Google Maps searches and URLs.
- [Website Emails Scraper](https://apify.com/maximedupre/website-emails-scraper) — find public email addresses on known websites.
- [Phone Number Validation API](https://apify.com/maximedupre/phone-number-validation) — check and format phone numbers after collection.
- [GlobalSources Supplier Scraper](https://apify.com/maximedupre/globalsources-supplier-scraper) — find supplier profiles and company details by product keyword.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `target` (type: `string`):

Choose how to find MercadoLibre contacts.

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

Enter one or more product or business search terms. This is used only for the Keywords Target.

## `sellerIds` (type: `array`):

Enter one or more MercadoLibre seller IDs. This is used only for the Seller IDs Target.

## `urls` (type: `array`):

Add one or more public MercadoLibre listing, seller, or shop URLs. This is used only for the MercadoLibre URLs Target.

## `country` (type: `string`):

Choose the MercadoLibre country to search and use for phone dial codes.

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

Stop after saving this many contacts. Leave it empty to return all available results until the source is exhausted.

## Actor input object example

```json
{
  "target": "keywords",
  "keywords": [
    "EMBER"
  ],
  "country": "MX",
  "maxItems": 1
}
```

# Actor output Schema

## `contacts` (type: `string`):

Public MercadoLibre contact results found by this run.

# 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 = {
    "target": "keywords",
    "keywords": [
        "EMBER"
    ],
    "country": "MX",
    "maxItems": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/mercadolibre-phone-number-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 = {
    "target": "keywords",
    "keywords": ["EMBER"],
    "country": "MX",
    "maxItems": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/mercadolibre-phone-number-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 '{
  "target": "keywords",
  "keywords": [
    "EMBER"
  ],
  "country": "MX",
  "maxItems": 1
}' |
apify call maximedupre/mercadolibre-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/mercadolibre-phone-number-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/Gz1YceRUXYk7xazrp/builds/muYeeAawkIHwfcNH6/openapi.json
