Phone trade-in value
Looks up the current buyback value of an iPhone — model, storage and condition — and returns every vendor's live cash offer, highest first.
Looks up the current buyback value of an iPhone — model, storage and condition — and returns every vendor's live cash offer, highest first. Fans out across buyback comparison sources; direct API, no browser.
Also known as: phone trade-in, phone trade in, phone trade-in estimate, phone trade-in value, trade-in phone, trade in my phone, trade-in iphone, trade in iphone, iphone trade-in, iphone trade in value, trade-in offers, trade in offers, trade-in offers iphone, trade in offers iphone, iphone trade-in offers, sell my phone, sell my iphone, phone buyback, phone resale value, what's my phone worth
Call it
bowmark.phone_trade_in.estimate(query: { model: string; storage: string; condition?: string } | string, options?: CallOptions): Promise<PhoneTradeInEstimate>Functions
| Function | What it does |
|---|---|
estimate | Looks up the current buyback value of an iPhone — bowmark.phone_trade_in.estimate({ model: "iPhone 14 Pro", storage: "256GB", condition: "good" }) — and returns every vendor's live cash… |
Types
// The capability's own condition vocabulary — four tiers every buyback
// comparison site groups devices into, whatever it calls them natively.
type TradeInCondition = "like_new" | "good" | "fair" | "broken";
// One buyback vendor's live cash offer for the requested device.
type TradeInQuote = {
source: string // which source this quote came from, e.g. "sellcell"
merchant: string // the buyback vendor's own name, e.g. "BuyBackBoss"
price: { amount: number; currency: string } // integer minor units — cents
paymentMethods: string[]
paymentPeriod: string | null
freeShipping: boolean
}
type PhoneTradeInEstimate = {
model: string // the resolved device slug, e.g. "iphone-14-pro"
storage: string
condition: TradeInCondition
quotes: TradeInQuote[] // every vendor's current offer, highest first
warnings: string[] // always present; empty when nothing was dropped
}
type CallOptions = {
timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
// A provider slower than this is DROPPED from the results and
// NAMED in warnings — never silently absent
}Examples
// what's my iPhone 14 Pro worth right now, in good condition?
const { quotes, warnings } = await bowmark.phone_trade_in.estimate({
model: "iPhone 14 Pro",
storage: "256GB",
condition: "good",
});
for (const w of warnings) log(w);
const best = quotes[0] ?? null;
log(best ? `${best.merchant}: $${(best.price.amount / 100).toFixed(2)}` : "no offers found");
return quotes.slice(0, 5);// compare a mint vs. a cracked-screen iPhone 15
const [mint, cracked] = await Promise.all([
bowmark.phone_trade_in.estimate({ model: "iPhone 15", storage: "128GB", condition: "like_new" }),
bowmark.phone_trade_in.estimate({ model: "iPhone 15", storage: "128GB", condition: "fair" }),
]);
return { mint: mint.quotes[0] ?? null, cracked: cracked.quotes[0] ?? null };