eBay Browse API → estimated-value lookups for tangible-asset records (parked 2026-05-26)
DARE.CO.UK · PARKED SKETCH · 2026-05-26
Mirrored from ~/.claude/.../memory/parked_sketch_ebay_value_lookup_for_asset_records_2026-05-26.md. This is a design sketch parked for future build — read for context, not as a current deliverable.
Wire eBay’s read-only Browse API (active listings) as the data source for the “as-is / current market value” column on every tangible-asset substrate record. Powers the asset_value_estimation_axis pattern with live numbers + a “last checked” freshness stamp. Significant caveat — Browse API gives ACTIVE asks; SOLD prices require Marketplace Insights API (gated, application required) or Terapeak (Seller-Hub UI only). Resume when first valuation is genuinely needed (insurance, planned sale, claim), OR when batch-processing the 24-photo equipment substrate makes per-item asks worth surfacing.
Dan 2026-05-26: “Can we add an estimated ebay value, to things, using the future ebay api, to do look-ups?”
What this earns its keep doing
Powers the “as-is current market value” column already defined by feedback_asset_value_estimation_axis.md — every tangible-asset record (technology, vehicle, tractor, pool equipment, watch, tool, instrument) gets a fact row:
Estimated value (as-is) $1,250 ± 300 median of 32 active eBay listings · checked 2026-05-26
Without a live data source, that field is hand-curated and rots. With this integration, it refreshes via cron / on-demand.
The two-tier reality of eBay’s API surfaces
| API | What it returns | Access tier | Use for |
|---|---|---|---|
Browse API (/buy/browse/v1) |
Active listings (live asks) — buy-it-now + auctions still running | Public OAuth app token, free | Median ask, ask range, sample listing URLs |
| Marketplace Insights API | Sold listings (last 90 days) + prices | Gated — application required; eBay vets use cases | True “sold-comp” value (what “estimated value” really wants) |
| Terapeak Product Research | Sold + insights | Seller-Hub UI only, no API | Manual lookups (browser); not automatable |
| Finding API (legacy) | Active items | Deprecated but works | Fallback if Browse OAuth is friction |
| 3rd-party scrapers | Sold prices via scraped sold-listings page | Grey area; against ToS for systematic use | Avoid for substrate; one-off OK |
The asterisk that matters: an “estimated value” from active listings is an asks median (i.e. what sellers want), not a sold median (what buyers actually paid). Asks typically run 15-30% above sold for most categories. So the displayed value is upper-bound until we either (a) apply for Marketplace Insights access or (b) annotate the field as “asks median” instead of “sold comp”.
Architectural sketch
1. The lookup script
~/bin/ebay_value_lookup.py — CLI tool:
�STASH6�
Returns:
�STASH7�
2. Per-record value-axis JSON sidecar
Each tangible-asset record gets a sidecar at <record>/value.json:
�STASH9�
3. Renderer integration
At record-build / refresh time, the page reads value.json and renders a value-axis fact row + a small “checked 26 May 2026” freshness stamp (per feedback_last_touched_freshness_pattern.md). On-demand refresh = a script run, not a page edit.
4. Cron
A ~/bin/pa_value_axis_refresh.py --all runs (weekly? monthly?) to refresh every record’s value.json. Status surfaces at pa/_status/value-axis-refresh.html per the existing job-status dashboard pattern.
5. Audit trail
Every lookup writes a history row to value.json so the page can render a 12-month trend sparkline. Tracks both market drift AND our refresh cadence.
OAuth + auth notes
- eBay Browse API requires an application access token (Client Credentials grant) — no user OAuth dance needed for public listings.
- Get
Client ID+Client Secretfrom https://developer.ebay.com/my/keys (eBay Developer Program). - Free tier: 5,000 calls/day — plenty for ~hundreds of records on weekly refresh.
- Token TTL ~2 hours; refresh handled in-script.
- Sandbox vs Production: use Production for real-data lookups; Sandbox for testing.
Composability with existing substrate
- 24-photo equipment batch (parked sketch from this same day) — each piece of equipment that lands a record can ship with
value.jsonfrom day one if the brand+model is identifiable. - Audrey watch substrate — high-leverage; small variations in model+condition swing thousands of dollars; live lookups beat hand-curated by miles.
- Tools / tractor / Husqvarna pattern — already structured as records; bolt-on integration.
- Insurance-claim affidavits —
feedback_insurance_claim_dashboard_pattern.mdbenefits from live valuations as defence against insurer lowballs. - eBay Seller API parked sketch — the sibling; if/when that unparks for listing, the Browse lookups become the suggested-asking-price feed for new listings.
Implementation sequence (resume-time playbook)
- Sign up
Daniel Dare Limited(or appropriate entity) for eBay Developer Program, get Client ID + Secret. (5 min) - Store secrets in 1Password (per
feedback_1password_custom_concealed_fields.md) + emit env vars via existing pattern. - Build
~/bin/ebay_value_lookup.py— Browse API client, query → median/percentiles. (~1 hr) - Build
~/bin/pa_value_axis_refresh.py— walks substrate, finds records withvalue-query.txtsidecars, runs the lookup, writesvalue.json. (~1 hr) - Add renderer integration to the 2-3 most valuable records (one watch, one piece of pool equipment, one piece of tech) as proof. (~30 min)
- Cron at daily/weekly cadence + add status-surface card on
status.gf.cx. (~30 min) - Apply for Marketplace Insights access in parallel — if granted, swap data source for sold-comps. (eBay turnaround unknown.)
Total budget: ~3-4 hours to first value rendered live.
Resume triggers
- Dan asks for valuation on a specific high-value asset (Audrey watch, tractor, heat-pump for an insurance claim)
- 24-photo equipment batch lands and the value-axis becomes immediately useful (heat-pump, pool-pump, FNS filter all have clean eBay comps)
- Insurance-claim cycle reopens and needs market-data defence
project_ebay_seller_api_integration_parked.mdunparks for listing — the Browse lookups become the suggested-asking-price feed
Cross-references
feedback_asset_value_estimation_axis.md— THE pattern this implements · already says every tangible asset gets a value axisproject_ebay_seller_api_integration_parked.md— sibling project · Sell API for listings (Browse vs Sell distinction)feedback_last_touched_freshness_pattern.md— sibling: value-axis carries a freshness stampfeedback_status_emitter_done_state_pattern.md— refresh job carries the same atexit hygienefeedback_ingest_dashboard_pattern.md— refresh job status surface follows this templatefeedback_1password_custom_concealed_fields.md— eBay API keys storagefeedback_insurance_claim_dashboard_pattern.md— high-leverage downstream use caseparked_sketch_pa_equipment_batch_24_photos_2026-05-26.md— most-immediate downstream consumerfeedback_no_unsanctioned_rpa_on_vendor_accounts.md— REMINDER: do not scrape sold-listings systematically (against eBay ToS); apply for Marketplace Insights instead
The aphorism
A hand-typed dollar amount is a guess that rots. A scripted asks-median is a snapshot of the market that ages honestly. Sold-comps would be truth — those are paywalled, and that’s why most people overestimate their stuff.