Tony Wang6 min de lecturaCómo scrapear Facebook Marketplace en 2026 (API y Python)
Facebook Marketplace no tiene API pública y Meta exige permiso antes de acceder — aun así, repasamos las opciones DIY, no-code y API.
Facebook Marketplace es una de las plataformas más estrictas de esta serie en cuanto a acceso automatizado. Meta nunca ha lanzado una API pública para los datos de listings de Marketplace — la Graph API que cubre Pages, Groups y Ads lo excluye de forma notoria — y los propios Automated Data Collection Terms de Meta exigen permiso expreso por escrito antes de cualquier recolección automatizada, una barrera mucho más explícita que la cláusula genérica de "por favor no nos scrapees" de la mayoría de las plataformas. Esta guía cubre igualmente las rutas DIY, no-code y de API estructurada, qué devuelve realmente cada una, y la postura legal bajo la que operas.
¿Por qué scrapear datos de Facebook Marketplace?
- Investigación de precios de anuncios clasificados locales — ver cómo se cotizan artículos usados, vehículos, muebles o electrónica en una ciudad específica.
- Investigación de reventa y arbitraje — detectar listings infravalorados en una categoría que valga la pena revender.
- Monitoreo de resellers y competidores — rastrear cómo evoluciona un término de búsqueda o categoría con el tiempo en una ubicación.
- Dimensionamiento del mercado local — evaluar la oferta y demanda de segunda mano para una categoría y ciudad.
- Pipelines y agentes de IA que necesitan datos estructurados de marketplace local en lugar de parsear HTML renderizado.
¿Es legal scrapear Facebook Marketplace?
Opción 1: DIY en Python (y por qué falla)
El enfoque ingenuo consiste en obtener una página de búsqueda de Marketplace y parsear las tarjetas de listing:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.facebook.com/marketplace/austin/search/?query=bike",
headers={"User-Agent": "Mozilla/5.0"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Listings render from an embedded relay/GraphQL JSON blob, not
# static markup — and an anonymous, datacenter-IP request is
# frequently redirected to a login wall before any data loads
Funciona una vez en la demo, y luego empiezan los problemas:
- Muros de login. Marketplace suele forzar una redirección a login para solicitudes anónimas o de IP de datacenter, aunque ese mismo listing sea públicamente visible para una sesión normal de navegador sin login.
- Defensas anti-bot inusualmente fuertes. El rate limiting, el fingerprinting de dispositivo y navegador, y los desafíos de checkpoint frenan rápido las solicitudes automatizadas — las defensas de Meta aquí están entre las más duras de toda esta serie de guías.
- Sin markup estable. Los datos de los listings viajan dentro de un blob de estado relay/GraphQL embebido que cambia de forma con cada deploy de la app, no en HTML seleccionable.
- Los Automated Data Collection Terms aplican sin importar la técnica. Incluso un scraper que funcione técnicamente sigue operando contra el requisito de permiso expreso de Meta, no contra una vaga cláusula de "por favor no".
Opción 2: Herramientas no-code y listas para usar
Existen extensiones de navegador y actors de scraping de marketplace puntuales para exportaciones manuales, pero heredan la misma fricción de muros de login y exposición legal que el DIY — y Meta ya ha demandado antes al menos a un proveedor de extensión de navegador (BrandTotal) por exactamente este patrón de recolección de datos. Una exportación manual tampoco resuelve el monitoreo continuo: el trabajo de reventa y seguimiento de precios implica volver a ejecutar la misma búsqueda de forma programada, lo cual es un problema de pipeline, no de herramienta puntual.
Opción 3: Una API estructurada de Facebook Marketplace
La Facebook API de Crawlora envuelve el manejo de solicitudes, headers y normalización detrás de un endpoint documentado de búsqueda de Marketplace.
curl "https://api.crawlora.net/api/v1/facebook/marketplace/search?location=austin&query=bike" \
-H "x-api-key: $CRAWLORA_API_KEY"
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/facebook/marketplace/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"location": "austin", "query": "bike"},
)
for item in resp.json()["data"]["listings"]:
print(item["title"], item["price"]["formatted"], item["url"])
La respuesta es JSON normalizado (ejemplo real — revisa los parámetros de la solicitud y el schema en los docs):
{
"code": 200,
"msg": "OK",
"data": {
"location": "austin",
"query": "bike",
"category": "vehicles",
"listings": [
{
"id": "1548909030206114",
"title": "Electric bike",
"price": { "formatted": "$350", "amount": "350.00", "isFree": false },
"city": "Austin",
"state": "TX",
"image": "https://scontent.fsgn12-1.fna.fbcdn.net/v/t39.84726-6/...",
"url": "https://www.facebook.com/marketplace/item/1548909030206114/"
}
],
"hasMore": true,
"sourceUrl": "https://www.facebook.com/marketplace/austin/search/?query=bike"
}
}
location es obligatorio (un vanity slug de ciudad como austin), y query, category, min_price, max_price, sort_by, days_since_listed y condition son filtros opcionales — usa los que necesites para acotar tu búsqueda.
El alcance público de Facebook va más allá de Marketplace. Un endpoint relacionado y separado, /facebook/{page}, busca el nombre, número de seguidores, categoría, horario y cualquier dato de contacto público de una Página de Facebook pública desde su pestaña About — útil si una categoría de Marketplace que estás siguiendo también tiene sellers que gestionan sus propias Páginas de Facebook:
page = requests.get(
"https://api.crawlora.net/api/v1/facebook/woodlandwindows1",
headers={"x-api-key": "YOUR_API_KEY"},
).json()["data"]
print(page["title"], page["stats"]["likes"], page.get("email"))
Qué puedes recolectar
- Resultados de búsqueda de Marketplace — id del listing, título, precio formateado y en crudo, flag de artículo gratis, ciudad/estado, imagen en miniatura y URL del listing, filtrados por ubicación más query, categoría, rango de precio, orden, antigüedad del listing y condición opcionales.
- Sin identidad del seller. El endpoint de búsqueda de Marketplace de Crawlora devuelve solo detalles del listing — no hay campo de nombre ni de perfil del seller.
- Datos públicos de Páginas de Facebook (endpoint separado) — nombre, número de seguidores/likes, intro, categoría, horario o rango de precio, número de reseñas, y cualquier email, teléfono o dirección público que exponga una Página de negocio.
Limitaciones
- Una superficie estrecha, de solo dos endpoints. Solo búsqueda — no hay un endpoint dedicado de detalle de item para un listing individual, ni galería de imágenes más allá de la miniatura de búsqueda, ni información del seller.
- Sin referencia oficial con la que comparar. A diferencia de eBay o Etsy, no existe ninguna API pública de Marketplace, así que no hay una brecha de conveniencia "oficial vs. scrapeada" — este endpoint es la única vía estructurada hacia estos datos.
- Entorno de aplicación más estricto. El requisito explícito de permiso de Meta y su historial de litigios convierten a Marketplace en una categoría de mayor riesgo que la mayoría de las plataformas de esta serie; mantén el volumen y la frecuencia razonables y limítate a datos públicos y sin sesión iniciada.
- Búsqueda acotada por ubicación. Los resultados se indexan a un vanity slug de ubicación (por ejemplo
austin), no a una búsqueda global o por radio. - Los precios y el stock cambian rápido. Los listings de Marketplace se venden o se retiran rápidamente — trata cada extracción como una instantánea y vuelve a ejecutarla de forma programada en lugar de confiar en un único conjunto de resultados.
Dónde se usa esto
- Investigación de reventa y arbitraje — escanear una categoría y ciudad en busca de listings infravalorados.
- Dimensionamiento del mercado local de segunda mano — evaluar oferta y demanda de una categoría de producto por ubicación.
- Monitoreo de resellers y competidores — rastrear cómo cambian los listings y los precios de un término de búsqueda a lo largo del tiempo.
- Enriquecimiento de negocios — combinar el seguimiento de categoría de Marketplace con el endpoint de búsqueda de Páginas cuando un seller también gestiona una Página de Facebook.
Fuentes
Empieza a recolectar
Pruébalo primero, gratis: ejecuta cualquier URL pública a través del Free Web Scraper, o comprueba si un sitio bloquea bots con el Anti-Bot Checker — sin registro.
Prueba el endpoint de búsqueda de Marketplace en el Playground, lee el schema de solicitud y respuesta en los API docs, y revisa el costo en créditos en la página de pricing. Facebook Marketplace convive con otros marketplaces peer-to-peer y de reventa en esta serie — consulta how to scrape eBay para reventa de subasta y precio fijo, y how to scrape Etsy para el lado hecho a mano y vintage — además de is web scraping legal para el panorama legal más amplio entre plataformas.
Parte de nuestra how-to-scrape guide series — cada plataforma que cubrimos, en un solo índice.
Preguntas frecuentes
¿Facebook tiene una API oficial para Marketplace?
No. Meta nunca ha publicado una API pública para los datos de listings de Marketplace — la Graph API cubre Pages, Groups y Ads, pero excluye a Marketplace de forma notoria. Lo más parecido a una vía oficial es una Commerce Partner API limitada, en alpha, para sellers aprobados que gestionan su propio inventario, no para investigación de mercado o búsqueda de listings de terceros.
¿Es legal scrapear Facebook Marketplace?
No es asesoría legal. Los listings de Marketplace son visibles públicamente sin necesidad de login, y hiQ Labs v. LinkedIn estableció que scrapear datos públicos no constituye automáticamente una violación de la CFAA. Pero los Automated Data Collection Terms de Meta exigen 'express written permission' antes de cualquier recolección automatizada, y Meta ha litigado activamente contra el scraping — perdió una demanda por incumplimiento de contrato contra Bright Data por scraping público sin sesión iniciada, pero ganó contra BrandTotal por una extensión de navegador que usaba sesiones con login. Recolecta solo datos públicos y sin sesión iniciada, y respeta los límites de tasa.
¿En qué se diferencia la postura de aplicación de Meta de otras plataformas de esta serie?
La mayoría de las plataformas de esta serie desalientan el scraping mediante una cláusula genérica de términos de servicio. Los Automated Data Collection Terms de Meta son más explícitos: exigen permiso expreso por escrito de Meta antes de cualquier recolección automatizada, y el robots.txt de Facebook apunta directamente a esos términos. Meta también ha demandado a scrapers y proveedores de extensiones de navegador, lo que eleva el riesgo de aplicación aquí más que en la mayoría de las otras plataformas de esta serie de guías.
¿Cómo scrapeo Facebook Marketplace con Crawlora?
Envía una ubicación (obligatoria) más filtros opcionales de query, categoría, rango de precio, orden, antigüedad del listing y condición al endpoint de búsqueda de Facebook Marketplace de Crawlora y recibe JSON normalizado — id del listing, título, precio, ciudad/estado, miniatura y URL del listing — sin parsear HTML renderizado ni gestionar muros de login.
¿El endpoint de búsqueda de Marketplace devuelve información del seller?
No. El endpoint de búsqueda de Facebook Marketplace de Crawlora devuelve solo detalles del listing — título, precio, ubicación, miniatura y URL — sin campo de nombre ni de perfil del seller.
¿También puedo consultar los datos de contacto de una Página de Facebook?
Sí, mediante un endpoint separado. /facebook/{page} busca una Página de Facebook pública por ID, nombre vanity o URL y devuelve su nombre, número de seguidores/likes, categoría, horario y cualquier información de contacto pública (email, teléfono, dirección) que exponga — una función distinta de la búsqueda de Marketplace.
¿Cuáles son las principales limitaciones de esta API?
La cobertura es estrecha: un endpoint de búsqueda de Marketplace (sin endpoint de detalle de item, sin identidad del seller) y un endpoint separado de búsqueda de Páginas públicas. No existe ninguna API oficial de Marketplace con la que comparar, los resultados se acotan a un slug de ubicación en lugar de una búsqueda global, y los precios/la disponibilidad cambian rápido, así que trata cada extracción como una instantánea.