Search
/api/offerup/search
Search listings by keyword, location, price band, condition, and sort order
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.
Try it now
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.
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"
{
"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
}
Structured data for real applications. Here are some ideas.
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.
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.
Check a counterparty before buying: items sold, follower count, rating summary, verification badges, and review text are one call away.
Surface underpriced second-hand listings matching your buying criteria, then enrich each candidate with detail and seller history.
Everything you need in one API.
/api/offerup/search
Search listings by keyword, location, price band, condition, and sort order
/api/offerup/item-details
Get condition, post date, fulfilment options, photos, and vehicle attributes for one listing
/api/offerup/seller-profile
Get a seller public profile with items sold, ratings, badges, and reviews
/api/offerup/seller-listings
List every live listing for one seller, walked page by page with page_cursor
/api/offerup/categories
Get the complete three-level category taxonomy with 1,093 leaf categories
/api/offerup/suggestions
Get search-bar query completions for typeahead interfaces
/api/offerup/geocode
Resolve a zip code or place name to the coordinates OfferUp searches around
See how Scrappa compares to the official API.
| Feature | Scrappa | OfferUp (no public API) |
|---|---|---|
| API available | Yes (7 endpoints) | No public API |
| Listing search | Programmatic | Manual only |
| Listing detail | Structured JSON | Not available |
| Seller ratings | On-site only | |
| Category taxonomy | 1,093 leaf categories | On-site only |
| Bulk access | ||
| Free tier | 500 credits/month | N/A |
| Integration ready | REST API |
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.