Gazelle
gazelle.com's own current trade-in offer for a device, for a chosen capacity/carrier/condition — read off the same bootstrap JSON and pricing endpoint the…
gazelle.com's own current trade-in offer for a device, for a chosen capacity/carrier/condition — read off the same bootstrap JSON and pricing endpoint the site's own offer page uses, instead of parsing prose off the rendered page.
Domain: gazelle.com
Also known as: Gazelle, gazelle.com
Call it directly
bowmark.providers.gazelle.findDevices(query?: string): Promise<GazelleDevice[]>
bowmark.providers.gazelle.getTradeInQuote(device: string, selections?: { capacity?: string; carrier?: string; condition?: string }): Promise<GazelleQuoteResult>Functions
| Function | What it does |
|---|---|
findDevices | Every device gazelle.com takes in trade, off gazelle's own sitemap — name, brand, model slug and the device's trade-in page URL. |
getTradeInQuote | Reads gazelle.com's own current trade-in offer for a device, for the given capacity/carrier/condition (each matched against that device's own option labels, e.g. condition: "Good").… |
Types
interface GazelleDevice {
name: string; // "iPhone 14 Pro" — what a person would say
brand: string; // gazelle's own brand segment, e.g. "iphone"
model: string; // gazelle's own model slug, e.g. "iphone-14-pro"
url: string; // the device's trade-in page
}
interface GazelleQuoteResult {
deviceUrl: string;
product: { id: string; name: string };
selections: { capacity: string | null; carrier: string | null; condition: string | null };
estimatedValue: number;
expirationDate: string | null;
}Examples
// what does gazelle pay for a Good, unlocked 256GB iPhone 14 Pro right now?
// the device is named the way a person names it — no URL needed
const quote = await bowmark.providers.gazelle.getTradeInQuote("iPhone 14 Pro", {
capacity: "256GB",
condition: "Good",
});
log(`$${quote.estimatedValue} (${quote.selections.condition})`);// which iPads does gazelle take at all?
const devices = await bowmark.providers.gazelle.findDevices("ipad");
log(devices.map((d) => d.name));