Search ebay.ca for completed sales
Create a free CompSniper account, set your key as COMPSNIPER_API_KEY and send ebaySite=ebay.ca. eBay's ID EBAY_CA works too.
This tested request asks for five recently ended, used iPhone 14 Pro sales on ebay.ca.
curl --get --fail-with-body --max-time 75 "https://api.compsniper.com/v1/scrape" \
--header "Authorization: Bearer $COMPSNIPER_API_KEY" \
--data-urlencode 'keyword=iPhone 14 Pro' \
--data-urlencode 'ebaySite=ebay.ca' \
--data-urlencode 'count=5' \
--data-urlencode 'itemCondition=used' \
--data-urlencode 'sortOrder=endedRecently' \
--data-urlencode 'sold=true'A real ebay.ca response in CAD
We ran the request above on . It returned HTTP 200 and five listings. This excerpt shows selected fields from one of those five rows; the other rows and top-level fields are omitted. Values are unchanged.
{
"keyword": "iPhone 14 Pro",
"totalItems": 5,
"items": [
{
"itemId": "188997248810",
"title": "Apple iPhone 14 Pro - 256 GB - Physical Sim - Deep Purple (Unlocked)",
"condition": "Pre-Owned",
"conditionId": 3000,
"soldPrice": "539.72",
"soldCurrency": "CAD",
"shippingPrice": "39.71",
"shippingCurrency": "CAD",
"shippingType": "paid",
"totalPrice": "579.43",
"endedAt": "2026-09-28",
"scrapedAt": "2026-10-03T04:46:12.352167+00:00",
"itemLocation": null,
"sellerType": null,
"bestOfferAccepted": true,
"url": "https://www.ebay.ca/itm/188997248810?nordt=true"
}
]
}endedAt is the reported sale date; scrapedAt is the collection timestamp. Repeating the request can return different listings. totalItems: 5 describes the original response, not the one-row excerpt.
This row sold for CAD 539.72 plus CAD 39.71 shipping (shippingPrice, with totalPrice CAD 579.43) on September 28, 2026, and carries bestOfferAccepted: true.
CAD prices and real shipping amounts
Unlike the European samples, three of the five Canadian rows included a known shipping charge (CAD 39.71 to CAD 113.22). Two showed unknown shipping. Compare item prices with item prices, and delivered totals only where shipping is known.
Every row came back with the English condition label Pre-Owned and conditionId 3000. Keep itemCondition=used for used comps, and still read titles for cracked screens or locked phones.
Storage matters for phones: this sample mixed 128 GB, 256 GB and 512 GB units. Put storage in the keyword or group by it before taking a median.
Read Best Offer sales carefully
bestOfferAccepted: true, so CAD 539.72 is an upper bound for what the buyer paid. null means the marker was not seen, not that the price is verified.Keep the comparison recent
Four of the five sales ended in late September 2026, but one ended on March 2, 2026. Old sales can drag a phone median off as new models launch. Add a date window:
curl --get --fail-with-body --max-time 75 "https://api.compsniper.com/v1/scrape" \
--header "Authorization: Bearer $COMPSNIPER_API_KEY" \
--data-urlencode 'keyword=iPhone 14 Pro' \
--data-urlencode 'ebaySite=ebay.ca' \
--data-urlencode 'count=5' \
--data-urlencode 'itemCondition=used' \
--data-urlencode 'sortOrder=endedRecently' \
--data-urlencode 'sold=true' \
--data-urlencode 'soldAfter=2026-09-01'The default AI cleanup removes cases and wrong models; use relevance=false for every raw result. Raise count up to 240 for a fuller sample.
Common questions about eBay Canada sold listings
How do I get eBay Canada sold listings through an API?
Call CompSniper GET /v1/scrape with ebaySite=ebay.ca (or the eBay marketplace ID EBAY_CA), a product keyword and your CompSniper Bearer API key. It returns up to 240 sold listings as JSON. The example in this guide returned CAD prices with paid shipping.
Are eBay Canada prices returned in CAD?
In the recorded sample, every row returned CAD in soldCurrency and shippingCurrency. Read the currency on each row rather than assuming it, and never mix CAD and USD values in one median.
What does bestOfferAccepted: true mean?
The listing sold through an accepted Best Offer. eBay usually shows the original asking price on these, so the buyer likely paid less than soldPrice. Treat those rows as an upper bound or keep them separate.
How do I keep only recent sales?
Add soldAfter (and optionally soldBefore) in YYYY-MM-DD format. In the recorded sample, one of five sales was months older than the rest, which a soldAfter filter would exclude.
Does Canada support the private or business seller filter?
No. sellerType only applies on ebay.de, ebay.fr, ebay.it and ebay.es, where eBay labels seller types. On ebay.ca the filter is ignored and sellerType is null.
Can I get the raw ebay.ca results?
Yes. Add relevance=false for the sold results exactly as eBay lists them. With the default cleanup on, rawMedian and rawSampleCount still report the numbers from before cleanup.
Continue your integration
Keep each marketplace and currency attached to its own sold comps. These guides use the same endpoint and API key:
- How to Get eBay Australia Sold Listings with an API
- How to Get eBay Germany Sold Listings with an API
- How to Get eBay UK Sold Listings with an API
- How to Get eBay France Sold Listings with an API
- How to Get eBay Spain Sold Listings with an API
For the full contract, see the API reference. The eBay sold listings API overview covers the product, and the CSV and Excel guide covers spreadsheet exports.
Written by the CompSniper team. The examples are dated observations, not current valuations or evidence of complete market coverage. CompSniper is an independent service, not an official eBay API.