Facebook 13 min read

5 Ways to Export Facebook Marketplace Listings to CSV in 2026

Compare five ways to export Facebook Marketplace listings to CSV or Google Sheets, including Meta's own-data download, extensions, no-code workflows, APIs, and Actor datasets.

by
Decision map for choosing a Facebook Marketplace CSV export method by data ownership and repeat frequency

If you need your own Marketplace records, start with Meta’s official data download. If you need public search listings in a CSV, use a browser extension for one small job, Bardeen for a no-code Google Sheets flow, ScrapeCreators for a repeatable API export, or Apify for Actor datasets. My pick for developer workflows is ScrapeCreators, which I run. For a quick one-off export, an extension is easier.

Facebook does not provide one native button that exports arbitrary public Marketplace search results. That distinction matters because “my listings” and “listings matching this search” are two different jobs.

I checked every product page and ran a two-page Marketplace export on September 15, 2026. I did not test every paid plan or use a private Facebook account.

Quick comparison

RankMethodBest forCost checked September 15, 2026Main limitation
1Meta’s own-data downloadData connected to your own Marketplace useNo separate export price statedNot an arbitrary public-search export
2Listing Scraper Chrome extensionA small, one-time CSV or Excel fileFree tier; limits and one-time upgrade shown in the extensionRuns inside your browser and depends on the loaded page
3Bardeen to Google SheetsA no-code sheet workflowUses Bardeen plan credits by actionBrowser workflow with more moving parts than a download
4ScrapeCreators Marketplace APIRepeatable exports inside code or an appFour live requests each charged 1 credit; 100 free creditsReturns JSON, so you create the CSV
5Apify Facebook Marketplace ScraperActor runs, datasets, schedules, and built-in export formatsProduct page showed conflicting $2.60 and $5 per 1,000-listing figuresActor and platform costs both need checking

The billing units do not line up cleanly. A free account export, a browser extension limit, an automation action, an API request, and an Actor result are different things. Price the full job, including detail lookups, pagination, storage, and reruns.

First decide what you are exporting

There are three common requests hiding inside the same search phrase:

  1. “I want a copy of my own Marketplace data.”
  2. “I want the public listings visible for a search and location.”
  3. “I want to upload or manage many listings from a spreadsheet.”

For the first job, use Meta’s official route. Meta has a help flow titled Access or download your data when using Marketplace. The exact archive categories can change, but this is the right starting point for information tied to your use of the product.

For the second job, you need a tool that reads public search results and turns them into structured rows. That is what the extension, Bardeen workflow, ScrapeCreators API, and Apify Actor below do in different ways.

The third job is outside this article. Meta separately documents how to use a spreadsheet for multiple listings. That is an upload or listing-management workflow, not proof that Facebook offers a native public-search export.

This split is missing from most ranking pages. It also showed up in the audience research. One Reddit result asked about exporting a seller’s own listings, while YouTube tutorials focused on public search URLs, scraper datasets, CSV files, and Google Sheets. TikTok searches for the same phrases were much noisier and mostly returned seller tips or app-download videos. A useful answer has to define the dataset before naming a tool.

Five ways to export Facebook Marketplace listings

1. Use Meta for data tied to your own account

Choose Meta’s own download tools when the noun “my” is doing the work. You are trying to access your own Marketplace information, not build a feed of public listings in Austin, Chicago, or another location.

This route has the clearest ownership boundary. It does not require a scraping extension, an API key, or a third-party dataset. Start here for an account archive, compliance request, or personal backup.

Do not assume the archive will look like a polished competitive-research table. Check the available Marketplace category, date range, format, and fields inside Meta’s current flow before promising a downstream schema.

Choose this if:

  • the export belongs to your own account;
  • you can wait for Meta to prepare it;
  • you do not need a live public-search feed.

Choose something else if the job starts with a query, coordinates, radius, price filter, or public item URL.

The Listing Scraper Chrome Web Store page says it exports Marketplace listings to CSV, XLSX, JSON, HTML, or raw JSON. The listing says processing happens locally, includes a free tier, and offers a one-time upgrade for unlimited exports and batch processing. It displayed 230 users when checked.

This is the shortest path from a search page to a file. Load Marketplace, scroll until enough rows appear, run the extension, and download the result.

The tradeoff is that the browser page becomes part of your data pipeline. The extension can only work with what the current session loads. Facebook UI changes can break extraction, and browser permissions deserve a real review. The store’s version notes said its extraction engine had already needed a fix after Facebook changes.

Choose this if you need 50 rows once and want to open them in Excel immediately. Do not choose it as the hidden backend for a product that must run every hour.

3. Use Bardeen when Google Sheets is the destination

Bardeen’s Marketplace workflow scrapes listings from the current page and appends them to a selected Google Sheets tab. Its page also says the output can go to Airtable or a CRM.

That is useful for an operator who thinks in sheets rather than APIs. It removes the file-download step and can connect the rows to a larger no-code workflow.

It also creates data-cleaning questions that a simple demo can hide. Under a public YouTube tutorial about sending Marketplace data to Sheets, viewers asked how to clean bracketed location values, show an image instead of its URL, avoid duplicate rows, sort by newest, and feed the result into an app. Those are not edge cases. They are the actual export job.

Use a stable listing ID as your sheet key. Put image URLs in their own column. Keep the raw price amount separate from its formatted currency string. Upsert rows rather than blindly appending every run.

Choose Bardeen when a person will work from the sheet and no-code automation is the point. An API is cleaner when the sheet is only an intermediate stop.

4. Use ScrapeCreators for a repeatable CSV job

The Marketplace Search endpoint returns structured listing JSON for a query, latitude, longitude, and radius. It supports filters such as price, condition, availability, category, sort order, and date listed. The response includes a cursor for pagination.

The Marketplace Item endpoint adds item-level fields when Facebook exposes them. Use it selectively. Calling one detail endpoint for every search row changes both the cost and runtime of the export.

ScrapeCreators does not pretend JSON is a spreadsheet. You decide the columns and write the file. That small amount of code gives you control over duplicate IDs, nullable fields, row limits, and schema changes.

Current pricing listed 100 free credits, then $47 for 25,000 credits or $1.88 per 1,000 one-credit requests. The four live Marketplace calls for this guide each reported credits_charged: 1. Credits are pay as you go and do not expire. Check the current pricing section and endpoint response before budgeting because prices and endpoint costs can change.

Choose this when the export runs in a backend, scheduled job, internal tool, or AI agent. Choose an extension if writing and operating code would cost more than the file is worth.

5. Use Apify when you want a managed Actor dataset

Apify’s maintained Facebook Marketplace Scraper accepts location, category, search, and item URLs. Its page says results can be downloaded as JSON, XML, CSV, Excel, or HTML. It supports scheduled Actor runs, APIs, datasets, and integrations such as Google Sheets and Make.

That makes Apify a good fit for a team that already uses Actors and wants the platform to own run history and dataset exports.

Read the live price in the console before committing to a budget. When checked, the same public product page showed “from $2.60 / 1,000 listings” near the top and later said $5 per 1,000 items in its README text. Apify’s platform pricing page listed a $0 plan with $5 of monthly usage and a $19 Starter plan. Those figures describe different layers, and the conflicting Actor copy makes a live run estimate more reliable than one copied number.

Choose Apify for managed datasets and Actor integrations. Choose ScrapeCreators when you want a narrower REST endpoint and would rather own the CSV step than the Actor lifecycle.

Disclosure: I run ScrapeCreators. Apify has a broader automation platform, and the Chrome extension is faster for a one-off file. Pick the operating model you actually want.

Turn two API pages into one clean CSV

This Node.js example fetches up to two pages, removes duplicate listing IDs, flattens nested values, and writes a real CSV file. Set SCRAPE_CREATORS_API_KEY in your environment before running it.

import { writeFile } from "node:fs/promises";

const endpoint = "https://api.scrapecreators.com/v1/facebook/marketplace/search";
const params = new URLSearchParams({
  query: "standing desk",
  lat: "30.2677",
  lng: "-97.7475",
  radius_km: "65",
  count: "12",
  sort_by: "creation_time_descend",
  availability: "available",
});

const listingsById = new Map();
let cursor;

for (let page = 0; page < 2; page += 1) {
  if (cursor) params.set("cursor", cursor);

  const response = await fetch(`${endpoint}?${params}`, {
    headers: { "x-api-key": process.env.SCRAPE_CREATORS_API_KEY },
  });

  if (!response.ok) {
    throw new Error(`Marketplace request failed: ${response.status}`);
  }

  const body = await response.json();

  for (const listing of body.listings ?? []) {
    listingsById.set(String(listing.id), {
      id: listing.id,
      title: listing.title,
      price: listing.price?.amount ?? "",
      currency: listing.price?.currency ?? "",
      city: listing.location?.city ?? "",
      state: listing.location?.state ?? "",
      listed_at: listing.creation_time ?? "",
      listed_text: listing.listing_date_text ?? "",
      image_url: listing.primary_photo?.url ?? "",
      listing_url: listing.url,
    });
  }

  cursor = body.cursor;
  if (!cursor || !body.has_next_page) break;
}

const rows = [...listingsById.values()];
const columns = Object.keys(rows[0] ?? {});
const csvCell = (value) => `"${String(value ?? "").replaceAll('"', '""')}"`;
const csv = [
  columns.join(","),
  ...rows.map((row) => columns.map((column) => csvCell(row[column])).join(",")),
].join("\n");

await writeFile("facebook-marketplace-listings.csv", csv);
console.log(`Wrote ${rows.length} unique listings`);

For a strict maximum, stop adding rows after your desired count. Do not assume an upstream count parameter is a perfect output cap.

What the live export test exposed

I ran that search pattern against the production API on September 15, 2026. The query was standing desk around Austin, Texas, with a 65 km radius, newest-first sorting, available listings, and count=12.

ObservationPage 1Page 2Export implication
Rows returned2412Apply your own hard row cap
Cursor returnedYesYesStore the cursor only if the next run should continue
IDs duplicated across pages22Deduplicate on listing ID
Unique rows after two pages34 total34 totalCount after deduplication, not before
Credits charged11Search cost followed requests, not rows

The first page also included a San Antonio result even though the search center and radius were set around Austin. Treat Marketplace location fields and radius as useful filters, not a guarantee that every upstream row fits your intended boundary. Validate city, coordinates when present, or your own distance calculation if geography is strict.

I sent the first result URL to the item endpoint. It returned the same listing ID and added item-level fields, including a description and one photo in that response. That proves the two endpoints can be joined by ID. It does not prove every item will expose every field.

This test changed the script in three ways: it deduplicates IDs, keeps nullable values empty, and enforces output rules on the client rather than trusting a requested count.

Fields worth keeping

A useful export is smaller than the raw response. Start with:

ColumnWhy keep itCleanup rule
idStable join and dedupe keyStore as text so spreadsheets do not round it
titleHuman review and keyword analysisPreserve raw text; normalize in a separate column
price.amountSorting and calculationsKeep numeric amount separate from formatted text
location.city and stateGeographic groupingDo not flatten the whole location object into one messy cell
creation_timeNew-listing logic when presentKeep the ISO value and the human label separately
listing_date_textUseful fallback and audit clueExpect null on some rows
primary_photo.urlImage referenceKeep the URL; do not embed binary images in CSV
urlReview and item-detail lookupPreserve the canonical item URL

Add seller information only when the use case needs it and the source exposes it. A larger dataset is not automatically a better one. Personal data increases storage, security, and compliance work.

For scheduled exports, save the raw response outside the analyst-facing CSV only if you have a real retention reason. Version your selected columns. If a field disappears, the job should leave the cell empty and log the change rather than shifting every column to the left.

The YouTube and Reddit research for this guide kept circling back to the same practical issues: duplicates, location drift, Excel or Sheets output, app integration, newest-first runs, and whether a browser or account could be detected. That is why the decision table focuses on the operating model, not a long list of features.

Limits, privacy, and terms

Facebook does not offer a general public Marketplace search API. Third-party tools depend on public web data and can break when Facebook changes the product.

Read Facebook’s current Terms before collecting data. Public visibility does not remove contractual, privacy, intellectual-property, or local-law obligations. Collect the minimum fields needed, secure stored files, set a retention period, and honor applicable deletion or access requests.

Keep read access separate from account automation. The ScrapeCreators Marketplace routes used here search public listings and retrieve item details. They do not publish listings, send cold messages, make purchases, or control a Facebook session. A Reddit discussion about connecting Marketplace scraping to cold DMs drew the predictable warning: the read step and the messaging step have different risk profiles.

CSV also has a small security trap. Spreadsheet programs can evaluate cells beginning with =, +, -, or @ as formulas. If untrusted text will be opened in Excel, escape potential formula cells before distribution. The code above quotes CSV syntax correctly, but production exports should add formula-injection protection based on how the file will be used.

Finally, public listings change. Prices, availability, titles, and images can disappear between export and review. Store the collection timestamp and treat the CSV as a dated snapshot, not a permanent catalog.

Sources checked

Product capabilities and changing prices were checked on September 15, 2026:

For a broader tool comparison, read the five best Facebook Marketplace APIs and scrapers. If the real goal is repeated monitoring rather than a file, use the Facebook Marketplace alerts guide. You can also create a free account and run the API example before paying.

FAQ

Frequently asked
questions

Can't find what you're looking for? Email us.

Adrian Horning

Written by

Adrian Horning

Founder of ScrapeCreators

Connect

ScrapeCreatorsScrapeCreators
Social Media Scraping API
for Developers

Real-time data from TikTok, Instagram, YouTube, X, Facebook, Reddit, and more.

Real-time Data

Fresh, accurate, always up-to-date.

No Proxies

We handle the infrastructure.

Developer First

Simple API. Powerful results.

TikTok logoInstagram logoYouTube logoX logoFacebook logoReddit logo
{200 OK
"platform": "youtube",
"type": "video",
"title": "Never Gonna Give You Up",
"views": 12504321,
"transcript": "We're no strangers to love...",
}
Success124ms
Purple gift box representing 100 free ScrapeCreators credits
Get 100 credits on us - instantly.

No credit card required. Start building for free.

Try the API, on us.

New developers get 100 free credits automatically when they sign up. No credit card required.

Get started free
Trusted by 10,000+ developers
99.9% uptime
Secure API access