How Camera Shelf works
Camera Shelf tracks used camera and lens prices across MPB, KEH, B&H Photo, and eBay so you can see whether a camera is at a good price right now or whether waiting might shave a bit more off. This page covers how we collect prices, how the deal score works, how often everything refreshes, and what we don't try to do. If you want to audit a specific verdict on a camera page, the links in each section here are the right place to start.
Where the prices come from
Four sources feed every camera page: MPB, KEH, B&H Photo Video's used department, and eBay. The first two specialize in second-hand camera gear and publish per-grade pricing. B&H carries a mix of used and refurbished inventory at fewer condition levels. eBay's listings are the noisiest of the four but the only source that surfaces private-seller pricing, which often sets the floor on a given week.
For each model we observe the lowest listed price at each (source, grade) pair. Listings with grades we can't normalize (see condition buckets) and "from / range" markers used when sellers don't actually have inventory at that grade are excluded from the rollup. They still appear in the per-source price table on each camera page so you can audit them, but they don't drive the headline number.
Affiliate disclosure: when a model has an Amazon ASIN curated for it, we include a "Buy new on Amazon" button that earns us a small commission if you buy. The used-price comparison is not affiliate-driven; we don't earn anything from MPB, KEH, B&H, or eBay clicks.
When prices update
A nightly crawl visits each source for every tracked model, parses the listings, and writes a fresh snapshot to the database. Every camera page shows a "last seen" timestamp on each per-source row so you can tell at a glance how recent the data is. The dateModified field in the page's structured data also carries the most recent observation timestamp; this is the signal search engines use to know how often to recheck.
Sources occasionally go silent. If MPB returns no result for a specific (model, condition) pair on a given day, that row simply doesn't appear in the table for that day. We don't fabricate continuity. The price history chart connects observations across gaps with lines so a single sparsely-sampled series still reads as a trend, but the absence of a point does not mean the listing went out of stock; it means the scraper didn't see a listing at that grade that day.
Condition buckets and grade normalization
Every seller has its own grading vocabulary. MPB uses "Like New," "Excellent," "Very Good," "Good," and so on. KEH grades on a numeric "BGN / EX / EX+ / LN-" scale. B&H mostly uses a 1-to-10 numeric scale. eBay lets sellers write almost anything. Comparing prices across sources requires mapping these onto a common axis, which we do in three normalized buckets:
- Mint
- Effectively new condition: original packaging, no signs of use. MPB "Like New," KEH "LN" or "LN-", B&H grade 10, eBay "Mint" or "New (Open Box)."
- Excellent
- Light use, fully functional, no operational issues. MPB "Excellent," KEH "EX+" or "EX," B&H grade 8 to 9, eBay "Excellent."
- Good
- Visible wear, fully functional, no defects affecting use. MPB "Good" or "Well Used," KEH "EX-" or "BGN+," B&H grade 7, eBay "Used."
- Fair
- Heavier wear, may have small operational quirks (sticky button, faded paint). KEH "BGN," B&H grade 6, eBay "Used (For Parts or Not Working)" excluded.
- Poor / Unknown
- As-is, parts, damaged. Excluded from the "lowest now" rollup so a parts body can't masquerade as the cheapest deal, but still visible in the per-source table on each camera page.
The mapping isn't perfect. Some grades are genuinely ambiguous, and individual sellers sometimes drift from their own published scale. The per-source price table on every camera page shows both the seller's raw label and our normalized bucket so you can audit any single mapping. If a listing's grade looks wrong to you, the raw label is the source of truth and our bucket is just a comparison aid.
How we compute the deal score
Every camera page leads with a verdict like "At the 90-day low" or "Prices are rising." That headline comes from comparing today's lowest observed price against three windows of price history: the last 7, 30, and 90 days. The lowest price we've ever observed (the "all-time low") is also factored in. The classification rules, in order:
- If today's lowest price is at or below the all-time low we've ever observed, the headline is "Lowest price we've ever observed." This is the strongest buy signal we surface.
- If it's at or below the 90-day low, the headline is "At the 90-day low."
- If it's within 5% of the 90-day low, the headline is "Near the 90-day low."
- If the 30-day trend is up more than 5%, the headline is "Prices are rising."
- If today's price is more than 20% above the 90-day low, the headline is "Well above the 90-day low."
- If today's price is at or above the launch MSRP, the headline is "Selling at or above MSRP," which usually means the camera is discontinued or in short supply.
- Otherwise, the headline is "Typical pricing right now."
The verdict block reports the exact numbers underneath the headline so you can sanity-check it: current low, MSRP, percent of MSRP, the 90-day low, the all-time low and its date, and the 30-day trend percentage. If fewer than 14 days of history have accumulated in the 90-day window, the verdict block shows a confidence note so you know the score is preliminary.
The deal score is about price timing, not product quality. A camera that's a poor fit for your use case can be at the 90-day low; conversely, a camera that's well-reviewed can be selling above MSRP. The verdict only tells you about the price.
What Camera Shelf doesn't do
A few things the catalog isn't trying to do. Knowing the gaps matters more than pretending they aren't there.
- We don't track every camera. The catalog is hand-picked. If you're shopping for something we don't cover, the deal score won't be there.
- International pricing is out of scope. All prices are USD, sourced from US-facing inventory at the four named sellers. Buying from Japan, Europe, or other regions can be a different market entirely, and we don't try to model that.
- Shutter count, wear history, and per-listing variations aren't reflected. Two MPB listings at the same grade can be meaningfully different when you actually look at the photos. The deal score works at the (grade, source) level, not the listing level.
- Tax, shipping, and seller fees aren't included. The price we report is the listed price, not the out-the-door price. eBay listings in particular can have wildly different shipping costs.
A note on reviews
Camera Shelf publishes a small number of editorial reviews written from first-hand experience with specific cameras. Each review is clearly labeled with the author, the dates published and last updated, and a "first-hand" badge when the reviewer has personally shot with the camera (the default). We do not aggregate other people's reviews, generate reviews from feature lists, or stage hands-on time we didn't have.
Most cameras in the catalog don't have an editorial review yet. When a review exists, we emit Schema.org Review structured data linked to the camera Product, including the rating (1 to 5), pros and cons lists, dates, and the reviewer name. When a review doesn't exist, we leave the Review and AggregateRating fields blank rather than fabricate signals.
Editorial reviews are about the camera itself: who it suits, who it doesn't, how it performs across shooting scenarios. The price-timing verdict on each camera page is a separate, data-driven judgment about whether now is a good time to buy, regardless of whether the camera is right for you. Both signals live on the page when they apply; neither one replaces the other.
Spot a mistake?
If a price looks wrong, a condition mapping looks off, or a camera is missing from the catalog, please reach out. Getting the data right matters more than getting all of it.