RangeRegistry

How our data works

By RangeRegistry Data DeskData last updated: How we collect this dataReport a data error

Sources {#sources}

Refresh schedule {#refresh}

Prices refresh at least once a day. If a refresh fails, the site keeps the last good data and does not publish a new build. Any price or stock row older than 48 hours is hidden, both when the site is built and again in your browser when the page loads. Range and spec data is re-checked on a rolling basis; each value shows the date it was checked.

Price per round

price per round = listed price / rounds in the package, stored to $0.001 and shown to the cent. Prices exclude shipping and tax unless a row says otherwise.

Parsing and validation {#validation}

We read caliber, grain, bullet type, case material and round count from the feed’s structured fields when they exist, and from the listing title when they don’t. Multi-box titles (“20/box x 10 boxes”) are multiplied out. Every parse gets a confidence score; anything ambiguous scores under 0.9 and is not shown.

A row is shown only when it is in stock, has a round count, has a confidence of 0.9 or more, is not flagged as an outlier, and was checked within 48 hours. Rows that fail validation are logged and never shown. Gear prices are matched to products by UPC or manufacturer part number only; title-only matches are never shown.

Outliers

A row is flagged as an outlier when its price per round is below 40% or above 300% of the caliber's trailing 30-day median. Until 30 days of history exist, we use a fixed sanity range per caliber:

Price drops

A listing is a price drop when today's price per round is at least 15% below its own 30-day median and we hold at least 14 days of history for it.

Ranking formulas

Ranked pages use a value score from 0 to 100: the sum of weight x factor, where each factor is scaled from 0 (worst on that page) to 1 (top on that page). To be ranked, a product needs every required spec with a source and current prices from at least 2 merchants. Ties go to the lower price.

Pistol red dots

Low-power variable optics

Weapon lights

Electronic hearing protection

Gun safes

Shot timers

Price history

Each day (Central time) we store the price of every displayable listing and the lowest and median price per round for each caliber.

Required specs

Ranges

Every range field links to the page we read it from, with the date we checked it. "Unknown" means no published source; we never infer a policy. A range counts as verified when its oldest field check is within 180 days.

Shipping policies

Each cell is the retailer's own published policy for that state, linked to the policy page, with the date we checked it. It is not legal advice.

When a page is published for search

A data page is open to search engines only when it has enough data: for example, an ammo table needs at least 8 listings from 3 merchants checked within 24 hours, and a price history page needs 30 days of snapshots. No more than 5 new pages open each week.

RangeRegistry earns a commission when you buy through some links, and some placements are paid and labeled Sponsored. Neither affects our sorting, rankings, or data. Sponsored placements sit in their own labeled box, outside every ranked table, and automated tests check on every build that sort order and scores are identical with and without sponsors.

Automation {#automation}

Data is collected and checked by automated systems operated by Spartan Alliance Group LLC. “RangeRegistry Data Desk” is the name of that editorial process, not a person.

Corrections {#corrections}

Every data page has a “Report a data error” link. Confirmed corrections are applied at the next refresh and listed on the corrections log. Range owners can submit corrections to their listing the same way.