Swappa Scraper - Used Tech, Prices, Sellers & Price History avatar

Swappa Scraper - Used Tech, Prices, Sellers & Price History

Pricing

from $1.40 / 1,000 results

Go to Apify Store
Swappa Scraper - Used Tech, Prices, Sellers & Price History

Swappa Scraper - Used Tech, Prices, Sellers & Price History

Scrape Swappa used-tech listings by device, carrier, storage, condition or color. Extract prices, seller details, battery health and full listing data, plus price guides, trade-in values and monthly price history.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Swappa Scraper: Devices, Photos and Sold Price History

Collect Swappa listings for used electronics with asking prices, condition, battery health, seller information and full photo galleries. Get completed sales, monthly sold-price trends and trade-in values for each model. Search by device name or paste listing, product, price, guide or category links, then export the results as JSON, CSV or Excel or read them through the Apify API.

Why This Scraper?

  • Asking prices and completed sales. Compare active listings with the amounts buyers actually paid, including condition, carrier and storage for each published sale.
  • Full device photos. Enable fetchDetails for all available full-size listing photos, descriptions, damage notes, seller policies and hardware specifications.
  • Seller context. Collect seller names, profile links, ratings, rating counts, locations, payment options and seller badges.
  • Several ways in. Search by model name or paste catalog, product, prices, guide, sales-history, individual listing, category or brand links.
  • History depth. Get monthly price trends and trade-in values, with optional deeper completed-sale history.
  • Repeatable monitoring. Incremental mode labels new, updated, reappeared and expired records; resume mode skips records already collected by an interrupted run.
  • Scoped collection. Filter search results by condition, storage, carrier and other device options. URL mode preserves the filters and starting page in your pasted links.

Use Cases

  • Used-device retailers: compare asking prices and completed sales before sourcing inventory.
  • Resellers: assess device condition, photos, damage notes and seller policies together.
  • Pricing analysts: track depreciation across models, storage sizes and condition grades.
  • Marketplace researchers: monitor inventory, seller activity and changes on a schedule.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
kindlisting or soldPrices
listingIdLAAA00000
productSlug / productNameapple-iphone-15-pro / Apple iPhone 15 Pro
price / priceExact / currency500 / 499.75 / USD
condition / damageDescriptionGood / Minor scratches on the frame.
batteryHealthPct92
storage / color / carrier256GB / Blue / Unlocked
modelNumber / gtin13A0000 / 0000000000000
images / imageCount / imagesCompleteFull-size photo URLs / 7 / true
sellerId / sellerName / sellerProfileUrlABC000 / Sample Seller / seller profile URL
sellerRating / sellerRatingsCount5.0 / 100
sellerLocation / sellerBadgesSample City / ["Trusted Seller"]
description / sellerAddendumSeller-provided description and additional terms
shippingCost / shippingPolicy / shippingDetails0 / seller policy text / shipping information
returnPolicy / returnDetailsSeller return terms and marketplace return information
compatibleCarriers / conditionDetailsCompatible carriers and condition requirements
listingBadges / stockPhotos["Approved", "Featured"] / false
listedAt / listingUpdatedAt / listingExpiresAt2026-01-01 / 2026-01-03 / 2026-01-31
specificationsGrouped camera, processor, memory, battery, display, dimensions and weight specifications
changeType / changedFieldsUPDATED / ["price"]
url / scrapedAtListing URL / 2026-01-01T00:00:00Z

Sold-price records contain salesHistory, soldPriceMin, soldPriceAvg, soldPriceMax, priceTrend, storagePrices, carrierStoragePrices and the dates covered. Photos, policies and specifications depend on what the listing publishes. imagesComplete: false means the full gallery could not be collected; the returned photos are partial. Results, Devices for sale, Device details and Sold price history are available as separate output tabs.

How to Use

  1. Select Search for model names or URL for pasted Swappa links.
  2. Choose Listings, Sold prices, or Both, then enable device details or deeper sold history if needed.
  3. Set Max listings to control the number of returned records.
  4. Start the run and download the dataset or access it through the API.

Search by device name:

{
"mode": "search",
"queries": ["iPhone 15 Pro"],
"resultType": "listings",
"fetchDetails": true,
"maxListings": 20
}

Use product, price and category links:

{
"mode": "url",
"urls": [
"https://swappa.com/listings/apple-iphone-15-pro?condition=mint&page=2",
"https://swappa.com/prices/apple-iphone-15-pro",
"https://swappa.com/catalog/product/apple-iphone-15-pro",
"https://swappa.com/guide/apple-iphone-15-pro",
"https://swappa.com/buy/phones"
],
"resultType": "both",
"fetchDetails": true,
"maxListings": 20
}

Collect deeper sold-price history:

{
"mode": "search",
"queries": ["iPhone 15 Pro", "Galaxy S24 Ultra"],
"resultType": "soldPrices",
"deepSoldHistory": true,
"maxListings": 2
}

Monitor a model for changes:

{
"mode": "search",
"queries": ["iPhone 15 Pro"],
"resultType": "listings",
"condition": "mint",
"incrementalMode": true,
"emitExpired": true,
"stateKey": "iphone-15-pro-mint",
"maxListings": 100
}

Run it from your code

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("abotapi/swappa-com").call(run_input={
"mode": "url",
"urls": ["https://swappa.com/prices/apple-iphone-15-pro"],
"resultType": "both",
"fetchDetails": True,
"maxListings": 5,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('abotapi/swappa-com').call({
mode: 'url',
urls: ['https://swappa.com/prices/apple-iphone-15-pro'],
resultType: 'both',
fetchDetails: true,
maxListings: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use the Integrations tab to connect Make, Zapier, n8n, Google Sheets or webhooks.

URL behavior and limits

Model listing, product, prices, guide and sales-history links select the same device model. A single-device link selects that listing and, when requested, its model's sold-price history. Category, brand and price-index links collect the device models shown on that page. URL filters and page=N are preserved for device listings; search-only filters do not replace them. Price and battery bounds apply to listings in either mode.

maxListings counts both device and sold-price records. With both, allow enough room for both kinds. maxPages limits pages per model; omitted or 0 means no page limit. An expired or unavailable listing cannot supply an active device record. Unsupported links fail with a clear message.

History, resume and recurring runs

Monthly trends typically cover a rolling six-month window. Recent completed sales are limited per model and filter combination, so their date range varies. deepSoldHistory collects additional condition, carrier and storage combinations and merges duplicate sales. Missing monthly prices remain null.

Use resumeFromRunId to finish an interrupted run without repeating its collected listing IDs. Use incrementalMode with the same stateKey for recurring monitoring. emitUnchanged includes unchanged rows; emitExpired applies only when the run proves that the monitored catalog was fully scanned. Capped or incomplete runs do not prove that unseen listings expired.

Send results into your apps (MCP connectors)

Results can optionally be piped into apps you already use, through Model Context Protocol connectors. Authorize a connector under Apify, Settings, API and Integrations, then select it in the mcpConnectors input. For Notion, also set notionParentPageUrl to the page under which item pages should be created. Use maxNotifyListings to cap how many items are written to each connector per run.

What gets written is a condensed, human-readable summary per item: a title plus the key fields flattened to plain text. Nested objects collapse to their main value and arrays are trimmed to a few entries, so the connector view is a digest, not a mirror. The complete record, including the full images, salesHistory and priceTrend arrays, always stays in the Apify dataset. Leaving mcpConnectors empty skips the export entirely and never changes the dataset output.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchSearch device names or read pasted links in url mode.
queriesarrayemptySearch mode: device names or product slugs.
resultTypestringbothlistings, soldPrices, or both.
conditionstringanySearch mode: new, mint, good, or fair.
carrierstringanySearch mode: carrier compatibility, including unlocked, att, t-mobile, verizon, and mint.
storagestringanySearch mode: storage token, such as 128gb or 1tb.
colorstringanySearch mode: color token.
modelnstringanySearch mode: model-number token.
sortstringsite defaultSearch mode: price_low, price_high, listing_created_newest, or listing_created_oldest.
withWarrantybooleanfalseSearch mode: one-year warranty listings only.
acceptsCreditCardsbooleanfalseSearch mode: sellers accepting card payments.
carrierUnlockedOnlybooleanfalseSearch mode: unlocked devices only.
excludeBusinessesbooleanfalseSearch mode: individual sellers only.
phoneCheckCertifiedbooleanfalseSearch mode: certified devices only.
internationalShippingbooleanfalseSearch mode: international shipping listings only.
urlsarrayemptyURL mode: listing, product, prices, guide, sales-history, category or brand links.
minPriceintegerunsetBoth modes: minimum device price in USD.
maxPriceintegerunsetBoth modes: maximum device price in USD.
minBatteryHealthintegerunsetBoth modes: minimum battery percentage; devices without a percentage are excluded.
fetchDetailsbooleanfalseCollect full galleries and device details. Adds a per-record surcharge for enriched results.
deepSoldHistorybooleanfalseCollect deeper completed-sale history. Adds a per-record surcharge for deepened results.
maxListingsinteger20Maximum returned records across both kinds. 0 means unlimited.
maxPagesintegerunlimitedMaximum catalog pages per model. Omitted or 0 means unlimited.
incrementalModebooleanfalseLabel and suppress records using the previous matching baseline.
emitUnchangedbooleanfalseAlso emit unchanged records.
emitExpiredbooleanfalseEmit missing listings after a complete catalog scan.
stateKeystringderivedName the recurring monitoring baseline.
resumeFromRunIdstringunsetSkip listing IDs already collected by this run or dataset.
proxyobjectResidential, USConnection settings; use the recommended input preset.
mcpConnectorsarrayemptyOptional connectors for sending results into your apps.
notionParentPageUrlstringunsetParent Notion page for connector output.
maxNotifyListingsinteger50Maximum records sent to each connector.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"kind": "listing",
"listingId": "LAAA00000",
"productSlug": "apple-iphone-15-pro",
"productName": "Apple iPhone 15 Pro",
"brand": "Apple",
"title": "Sample listing headline",
"price": 500,
"priceExact": 499.75,
"currency": "USD",
"condition": "Good",
"batteryHealthPct": 92,
"storage": "256GB",
"color": "Blue",
"carrier": "Unlocked",
"carrierUnlocked": true,
"modelNumber": "A0000",
"gtin13": "0000000000000",
"featured": true,
"listingBadges": ["Approved", "Featured"],
"stockPhotos": false,
"imageUrl": "https://static.swappa.com/media/listing/LAAA00000/sample-front.jpg",
"images": [
"https://static.swappa.com/media/listing/LAAA00000/sample-front.jpg",
"https://static.swappa.com/media/listing/LAAA00000/sample-back.jpg"
],
"imageCount": 2,
"imagesComplete": true,
"sellerId": "ABC000",
"sellerName": "Sample Seller",
"sellerProfileUrl": "https://swappa.com/profile/ABC000",
"sellerRating": 5.0,
"sellerRatingsCount": 100,
"sellerLocation": "Sample City",
"sellerBadges": ["Trusted Seller"],
"acceptsPaypal": true,
"acceptsCreditCards": true,
"description": "Sample device description.",
"damageDescription": "Minor scratches on the frame.",
"sellerAddendum": "Sample seller terms.",
"compatibleCarriers": ["AT&T", "T-Mobile", "Verizon"],
"compatibleCarrierCount": 3,
"shippingCost": 0,
"shippingPolicy": "Sample shipping policy.",
"shippingDetails": ["Ships with tracking and insurance."],
"returnPolicy": "Sample return policy.",
"returnDetails": ["Marketplace return policies apply."],
"conditionDetails": ["Minor wear and tear."],
"listedAt": "2026-01-01",
"listingUpdatedAt": "2026-01-03",
"listingExpiresAt": "2026-01-31",
"specifications": [
{"group": "Battery and Charging", "name": "Capacity", "value": "3274 mAh"}
],
"detailFetched": true,
"changeType": "NEW",
"changedFields": [],
"firstSeenAt": "2026-01-01T00:00:00Z",
"lastSeenAt": "2026-01-01T00:00:00Z",
"url": "https://swappa.com/listing/view/LAAA00000",
"scrapedAt": "2026-01-01T00:00:00Z"
}

Plan Requirement

Use an Apify account with access to the connection settings selected in the input. Check the Pricing tab for current result and enrichment charges.

FAQ

How much does it cost?

See the Pricing tab for current rates. maxListings controls the returned record count. Device details and deeper sold history add a surcharge to successfully enriched records.

Use publicly available data and follow the site's terms, applicable privacy laws and other regulations. You are responsible for having a lawful basis for any personal data you process.

Can I collect only new or changed devices on a schedule?

Yes. Enable incrementalMode and reuse the same input scope and stateKey. Leave emitUnchanged off to suppress unchanged records. Use resumeFromRunId separately to finish an interrupted collection.

Why do I see only one photo?

Catalog-only collection returns a preview image. Enable fetchDetails for the full images array. Check imagesComplete to distinguish a complete gallery from a partial read. Some listings publish only one photo or use seller stock photos.

Yes. Product, prices, guide and sales-history links select the model; resultType selects its listings, sold history or both. Category and brand links select the models shown on that page.

Why did my run fail instead of returning an empty dataset?

An unreadable page or unsupported link is reported as a failure. Review the input and try again shortly. An empty market or a filter with no matching devices is different from a page that could not be read.

Can I use the results with AI agents or MCP?

Yes. Read the dataset through the Apify API or configure the optional MCP connectors to send a summary into your apps. The complete records remain in the dataset.

πŸ”— Want more electronics data?

Pair this actor with these related scrapers from the same team:

🏷️ Avito.ru Scraper
From $1/1K. Scrape structured listings from Avito.ru by region, category, filters, or...
πŸ”Œ Bic Camera Scraper
Scrape Bic Camera (biccamera.com) products: JPY price, list price and discount, Bic Point...
πŸ”Œ Boulanger.com
Scrape Boulanger (boulanger.com) electronics and home-appliance products: current price...
πŸ”Œ Darty Scraper
Scrape Darty (darty.com) products: current price plus strike-through reference price and...
πŸ”Œ Dienmayxanh Scraper
Scrape dienmayxanh.com home appliances and electronics with full specifications, current...
πŸ₯¦ El Corte InglΓ©s Scraper
Scrape El Corte InglΓ©s elcorteingles.es products across fashion, electronics, home...

πŸ‘‰ Browse all abotapi scrapers

πŸ’¬ Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • πŸ› οΈ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.