OfferUp API

US Second-Hand Marketplace Listings via REST API

Search OfferUp listings, get full item detail with condition and fulfilment options, read seller profiles and ratings, and pull the full three-level category taxonomy. OfferUp has no public API; Scrappa turns its GraphQL feed into documented REST endpoints you can query with a single API key.

500 free credits
No card needed
From $0.20 / 1k
Pay as you go
Structured JSON
Ready for apps
API key access
Test in minutes
7
Endpoints
US
Marketplace
1,093
Categories

Try it now

Make one request. Inspect structured JSON.

Use the first endpoint in this API family with a Scrappa API key. Every account includes 500 free monthly credits, so you can validate the response shape before buying credits.

Request preview
Request
curl -X GET "https://scrappa.co/api/offerup/search?q=iphone&zipcode=77002&radius=30&sort=-posted" \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY"
JSON response
{
  "success": true,
  "count": 1,
  "results": [
    {
      "listing_id": "9c1f6a2e-4b7d-4a51-9f0e-1d2c3b4a5e6f",
      "title": "iPhone 13 128GB Blue",
      "price": 320,
      "location_name": "Houston, TX",
      "hydrated": false
    }
  ],
  "total_results": null
}

What you can build

Structured data for real applications. Here are some ideas.

Second-Hand Price Monitoring

Track asking prices for used electronics, furniture, and gear by zip code and radius. Combine price_min and price_max with condition filters to watch a specific segment of the market over time.

Marketplace Search Apps

Build a second-hand shopping interface with real listings, photos, condition, and fulfilment options. Search returns clean JSON, so there is no HTML parsing to maintain.

Seller Due Diligence

Check a counterparty before buying: items sold, follower count, rating summary, verification badges, and review text are one call away.

Inventory Reselling Leads

Surface underpriced second-hand listings matching your buying criteria, then enrich each candidate with detail and seller history.

Available endpoints

Everything you need in one API.

GET

Item Details

/api/offerup/item-details

Get condition, post date, fulfilment options, photos, and vehicle attributes for one listing

GET

Seller Profile

/api/offerup/seller-profile

Get a seller public profile with items sold, ratings, badges, and reviews

GET

Seller Listings

/api/offerup/seller-listings

List every live listing for one seller, walked page by page with page_cursor

Scrappa vs OfferUp (no public API)

See how Scrappa compares to the official API.

API available
Scrappa: Yes (7 endpoints)
OfferUp (no public API): No public API
Listing search
Scrappa: Programmatic
OfferUp (no public API): Manual only
Listing detail
Scrappa: Structured JSON
OfferUp (no public API): Not available
Seller ratings
Scrappa:
OfferUp (no public API): On-site only
Category taxonomy
Scrappa: 1,093 leaf categories
OfferUp (no public API): On-site only
Bulk access
Scrappa:
OfferUp (no public API):
Free tier
Scrappa: 500 credits/month
OfferUp (no public API): N/A
Integration ready
Scrappa: REST API
OfferUp (no public API):

Key features

Search by keyword, zip code, coordinates, price band, condition, and sort order
Location required, so results never drift to the proxy server area
Item detail with condition, post date, fulfilment, photos, and vehicle attributes
Seller profiles with items sold, rating summary, badges, and review text
Complete three-level category tree: 14 top-level, 137 second-level, 1,093 leaf
Zip and place-name geocoding for reproducible radius searches
Search suggestions for typeahead interfaces
Advertisements removed and duplicate listings deduplicated
One upstream lookup per request, and failed requests are never charged
No official OfferUp API exists — Scrappa fills the gap

Frequently asked questions

Not on the search page. OfferUp only exposes condition, post date, category, and fulfilment on its detail resolver, so filling them in for a full page of listings would take dozens of extra upstream requests behind one charge. Search returns them as null with hydrated set to false, and the item details endpoint returns the real values in one call.

Not at search time — that filter does not exist on OfferUp's search resolver. Sending it anyway would silently return every listing, so this API does not expose it. Use the fulfilment details on the item details endpoint to tell local pickup from shipping on listings you have already selected.

OfferUp falls back to the requesting server's own geography when no location is supplied, which means results change depending on which proxy handled the request. Requiring a zip code or coordinates makes a search reproducible. The geocode endpoint resolves a zip or place name to coordinates first.

No to both. OfferUp controls its own page size, ignores a limit on search, and never reports a total. The total_results field is always null — derive completeness from the listings themselves. On seller listings a limit is forwarded upstream, but the page is returned whole so no listing becomes unreachable, which means count can come back higher than the limit you asked for.

Just a Scrappa API key passed as an X-API-KEY header. No OfferUp account, no partner program, no OAuth. Sign up for free, get your key, and start querying listings immediately.

No. A request that fails upstream is never billed. A successful search that happens to match zero listings is a real answer and is billed normally.

Yes. Every Scrappa account gets 500 free credits per month with no credit card required. Test all OfferUp endpoints before committing to paid usage.

Scrappa charges $0.20 per 1,000 requests with no daily caps. All OfferUp endpoints cost the same. The free tier includes 500 credits per month to get started.

Start using the OfferUp API

Sign up and get 500 free credits. No credit card required.