# OfferUp Scraper: Search URLs, Items, Cars, Electronics & Deals (`scraperpro/offerup-scraper`) Actor

Extract OfferUp listings, vehicle specs, high-resolution photos, seller ratings, and prices by search URL, category, or keyword across any US ZIP code. Fast, reliable, and zero setup.

- **URL**: https://apify.com/scraperpro/offerup-scraper.md
- **Developed by:** [ScraperPro](https://apify.com/scraperpro) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 listings

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?

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

## 🏷️ OfferUp Scraper: Search URLs, Items, Cars, Electronics & Deals

Supercharge your product sourcing, car flipping, and market research with the ultimate **OfferUp Scraper**. Discover unbeatable local deals, track vehicle inventory, and extract seller ratings, prices, and full-resolution photos across any US ZIP code in seconds.

Simply paste any **OfferUp search URL**, pick a category, or enter a keyword—no technical setup required!

***

### 🌟 Why Use This OfferUp Scraper?

- **🔗 Direct Search & Listing URL Support**: Simply copy and paste any OfferUp search, category, or listing URL from your browser. All filters, keywords, and prices are automatically detected.
- **🚗 Complete Car & Vehicle Specs**: Extract vehicle year, make, model, trim, mileage, VIN, transmission, fuel type, and clean/salvage title status directly from auto listings.
- **📍 Precise Local Targeting**: Target any 5-digit US ZIP code with customizable search radiuses up to 500 miles.
- **👤 Deep Seller Intelligence**: Access seller reputation ratings, total reviews, account age, verified badges, and average response times before making an offer.
- **📸 High-Resolution Photo Galleries**: Collect full-size image URLs ready for computer vision, inspection, or e-commerce catalog creation.
- **⚡ Fast & Cost-Effective**: Powered by Pay-Per-Event billing—compute is 100% free, and you only pay for successfully extracted listings saved to your dataset.
- **⚙️ Flexible Export**: Download clean data directly to **Excel, CSV, JSON**, or stream it via API and webhooks into your automated workflow.

***

### 🎯 Popular Use Cases

- **🚙 Auto Flippers & Dealerships**: Track undervalued cars, trucks, and SUVs as soon as they are listed. Filter by mileage, year, make, and trim to spot high-margin flips.
- **📦 E-commerce & Resale Arbitrage**: Source discounted electronics, smartphones, sneakers, designer goods, and power tools to resell on eBay, Amazon, or Mercari.
- **🛋️ Furniture & Estate Sales**: Spot moving sales, estate liquidations, and deep discounts on furniture and home decor in specific metro areas.
- **📊 Real-Time Market Analytics**: Monitor regional pricing fluctuations, supply volume, and buyer demand trends across different metro areas.

***

### 📋 Supported URL Formats & Examples

You can pass URLs directly into `searchUrl` or `startUrls`:

| URL Type | Example URL | What Gets Extracted |
| :--- | :--- | :--- |
| **Search with Filters** | `https://offerup.com/search?q=honda+civic&cid=5.1&price_max=15000` | Keyword, category, and price filters are auto-applied |
| **Category Browsing** | `https://offerup.com/category/cars-trucks-5.1` | Category ID `5.1` is parsed automatically |
| **Direct Listing URL** | `https://offerup.com/item/detail/98ac7bc0-3fb6-3841-a8c6-e09242e60239` | Instant deep detail extraction for that exact listing |

***

### 🚀 How to Get Started in 3 Easy Steps

1. **Provide Your Search**: Either paste an OfferUp search URL (e.g. `https://offerup.com/search?q=honda+civic&cid=5.1`) OR enter a keyword, category, and ZIP code.
2. **Choose Your Limits**: Set the maximum number of items and whether you want deep details (seller stats & vehicle specs).
3. **Click "Start"**: Watch your dataset populate with verified listings, seller stats, and vehicle specs ready to download!

***

### 📥 Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `startUrls` | Array | `[]` | List of OfferUp search, category, or direct item detail URLs. Automatically extracts filters and keywords. |
| `searchUrl` | String | `""` | Single OfferUp search or item detail URL (e.g. `https://offerup.com/search?q=honda+civic`). |
| `searchQuery` | String | `""` | Search keyword (e.g., `honda civic`, `macbook pro`, `dewalt drill`). Leave empty to browse all items. |
| `categoryId` | Select | `"5.1"` | Category filter: **Cars & Trucks** (`5.1`), **Electronics** (`1.1`), **Furniture** (`2.1`), or **All Categories** (`all`). |
| `zipCode` | String | `"90001"` | 5-digit US ZIP code to center your search around. |
| `radius` | Integer | `50` | Search radius in miles (from 5 to 500 miles). |
| `sortBy` | Select | `"-posted"` | Sort order: **Newest First** (`"-posted"`), **Closest First** (`"distance"`), **Price: Low to High** (`"price_asc"`), or **Price: High to Low** (`"price_desc"`). |
| `minPrice` | Integer | `null` | Minimum listing price in USD. |
| `maxPrice` | Integer | `null` | Maximum listing price in USD. |
| `maxItems` | Integer | `50` | Maximum number of listings to collect (up to 10,000). |
| `scrapeDetails` | Boolean | `true` | When enabled, enriches listings with full seller profiles, condition details, and vehicle specs. |
| `maxConcurrency` | Integer | `5` | Number of simultaneous detail requests for maximum speed. |

***

### 📊 Extracted Data Fields

| Category | Field Name | Description |
| :--- | :--- | :--- |
| **Listing Info** | `listingId`, `url`, `title`, `description`, `postDate`, `lastEdited`, `status` | Core listing identity and lifecycle info |
| **Pricing & Condition** | `price`, `originalPrice`, `isFirmPrice`, `condition` | Price, negotiated status, and translated condition label |
| **Location** | `locationName`, `latitude`, `longitude`, `distanceMiles` | Geographic data and distance from search center |
| **Seller Reputation** | `sellerName`, `sellerRating`, `sellerReviewCount`, `sellerDateJoined`, `sellerItemsSold`, `sellerResponseTime`, `sellerVerified`, `isDealer` | Full seller profile, ratings, response time, and verified badges |
| **Vehicle Specs** | `isVehicle`, `vehicleYear`, `vehicleMake`, `vehicleModel`, `vehicleTrim`, `vehicleMiles`, `vehicleVin`, `vehicleTransmission`, `vehicleFuelType`, `vehicleTitleStatus` | Deep automotive specs extracted directly from vehicle listings |
| **Media & Delivery** | `thumbnailUrl`, `imageUrls`, `localPickup`, `shippingAvailable` | Full-resolution photo array and delivery options |

***

### 📤 Sample Output Data

Each result is delivered in clean, structured JSON:

```json
{
  "listingId": "98ac7bc0-3fb6-3841-a8c6-e09242e60239",
  "url": "https://offerup.com/item/detail/98ac7bc0-3fb6-3841-a8c6-e09242e60239",
  "title": "2000 Honda Civic",
  "price": 16999,
  "originalPrice": 16999,
  "isFirmPrice": false,
  "condition": "Open Box / Like New",
  "description": "Selling my 2000 Honda Civic Si (EM1) with 168,635 miles. Clean title, runs great, AC cold.",
  "locationName": "Snohomish, WA",
  "distanceMiles": 12.4,
  "latitude": 48.035,
  "longitude": -122.039,
  "sellerName": "Kyle",
  "sellerRating": 5,
  "sellerReviewCount": 69,
  "sellerDateJoined": "2016-03-10T04:17:26Z",
  "sellerItemsSold": 115,
  "sellerResponseTime": "Responds in a few minutes",
  "sellerVerified": true,
  "isDealer": false,
  "isVehicle": true,
  "vehicleYear": 2000,
  "vehicleMake": "Honda",
  "vehicleModel": "Civic",
  "vehicleTrim": "SI",
  "vehicleMiles": 168635,
  "vehicleTransmission": "Manual",
  "vehicleFuelType": "Regular",
  "vehicleTitleStatus": "clean",
  "thumbnailUrl": "https://images.offerup.com/lpERZEJKw582yoN6AQA9YowYf8U=/333x250/4f74/4f7412e94d3542ecbb49a6012adeae69.jpg",
  "imageUrls": [
    "https://images.offerup.com/3wcWUHuAUp24fM0rkI4UffFmn_k=/1280x960/4f74/4f7412e94d3542ecbb49a6012adeae69.jpg",
    "https://images.offerup.com/XmgJCqtcdbPol0IbjbPHZFIVmJE=/960x1280/5f2a/5f2a8b7b78ce4f31a32f5f7d810f3c2f.jpg"
  ],
  "localPickup": true,
  "shippingAvailable": false
}
```

***

### 💰 Pay-Per-Event Pricing

This Actor operates under Apify's **Pay-Per-Event (PPE)** monetization model:

- **Free Compute & RAM**: You pay **$0 for server compute**. Server runtime, CPU, and RAM usage are completely free.
- **Pay Only for Results**: You only pay for successfully extracted listings saved to your dataset.
- **Automatic Tier Discounts**: Volume discounts automatically apply based on your Apify subscription tier (Free, Bronze, Silver, Gold, Platinum, Diamond).
- **Fair Guarantee**: If a query returns 0 items (no IDs found), you are not charged for listings.

***

### ❓ Frequently Asked Questions (FAQ)

#### Can I paste a search URL directly from OfferUp?

Yes! Simply copy the URL from your browser address bar (such as `https://offerup.com/search?q=macbook&cid=1.1`) and paste it into `searchUrl` or `startUrls`. The Actor automatically parses the keyword, category, price range, and radius.

#### Can I scrape an individual OfferUp listing?

Yes. Paste any direct listing URL (e.g. `https://offerup.com/item/detail/<id>`) into `searchUrl` or `startUrls` to extract full vehicle specs, seller stats, and full-resolution images for that specific item.

#### Are proxies included?

Yes! Residential proxy rotation is configured automatically through the Apify platform. You do not need to purchase or manage external proxies.

#### Can I export the data to Excel, CSV, or Google Sheets?

Yes. Once your run completes, Apify lets you export the dataset in JSON, CSV, XML, Excel (XLSX), or connect it via webhook / Zapier / Make to your database or CRM.

# Actor input Schema

## `startUrls` (type: `array`):

OfferUp search, category, or direct item detail URLs. Parameters like keywords, category, and price will be automatically extracted.

## `searchUrl` (type: `string`):

Single OfferUp search, category, or item detail URL (e.g. https://offerup.com/search?q=honda+civic).

## `searchQuery` (type: `string`):

Keyword to search for (e.g., 'honda civic', 'iphone 15', 'leather couch'). Leave empty to browse all items.

## `categoryId` (type: `string`):

Filter by OfferUp category. Choose 'All Categories' or a specific category.

## `sortBy` (type: `string`):

Sorting order for search results.

## `minPrice` (type: `integer`):

Minimum item price in USD.

## `maxPrice` (type: `integer`):

Maximum item price in USD.

## `zipCode` (type: `string`):

5-digit US ZIP code to center the search.

## `radius` (type: `integer`):

Search distance radius around the ZIP code (5 to 500 miles).

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

Maximum number of listings to scrape.

## `scrapeDetails` (type: `boolean`):

When enabled, scrapes deep listing details including full resolution images, seller stats, vehicle VIN/specs, and descriptions.

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

Number of concurrent item detail requests.

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

Apify residential proxies are required to bypass OfferUp anti-bot protection and prevent rate limits.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://offerup.com/search?q=honda+civic&cid=5.1"
    }
  ],
  "searchQuery": "used cars",
  "categoryId": "5.1",
  "sortBy": "-posted",
  "zipCode": "90001",
  "radius": 50,
  "maxItems": 50,
  "scrapeDetails": true,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Extracted listings, seller details, vehicle specs, and high-res photos.

# 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 = {
    "startUrls": [
        {
            "url": "https://offerup.com/search?q=honda+civic&cid=5.1"
        }
    ],
    "searchQuery": "used cars",
    "zipCode": "90001"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperpro/offerup-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 = {
    "startUrls": [{ "url": "https://offerup.com/search?q=honda+civic&cid=5.1" }],
    "searchQuery": "used cars",
    "zipCode": "90001",
}

# Run the Actor and wait for it to finish
run = client.actor("scraperpro/offerup-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 '{
  "startUrls": [
    {
      "url": "https://offerup.com/search?q=honda+civic&cid=5.1"
    }
  ],
  "searchQuery": "used cars",
  "zipCode": "90001"
}' |
apify call scraperpro/offerup-scraper --silent --output-dataset

```

## MCP server setup

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