GunSpec

Statistics & Analytics

Aggregated insights from the firearms database. Discover popular calibers, prolific manufacturers, category breakdowns, era analysis, material distributions, and adoption patterns.

Authentifizierung erforderlichExplorer+

Returns headline counts for the catalog: total firearms, manufacturers, calibers, and categories.

GET/v1/stats/summary

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object

    The response payload.

  • integer

    Firearms in the catalog.

  • integer

    Manufacturers in the catalog. Counts rows, so it exceeds the number of makers with a catalogued firearm.

  • integer

    Cartridges in the catalog.

  • integer

    Distinct countries of origin across the catalog.

  • number

    Mean data_confidence across the catalog, as a percentage rather than the 0-1 the per-record field uses.

  • integer

    Firearms that are a variant of another, meaning those carrying a parentFirearmId.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Responses carry an ETag. Send it back as If-None-Match to receive a 304 Not Modified when nothing has changed.

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Dieser Aufruf beantwortet bedingte Anfragen. Speichern Sie das ETag einer Antwort und senden Sie es als If-None-Match zurueck: ein unveraenderter Datensatz liefert 304 Not Modified ohne Body. Das zaehlt auf Ihr Minutenlimit, aber nicht auf Ihr Tageskontingent.

Authentifizierung erforderlichExplorer+

Returns how many firearms are in production, discontinued, or prototypes.

GET/v1/stats/production-status

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object[]

    The response payload.

  • string | null

    Production status, one of in_production, discontinued, out_of_production, in_service, limited_production, prototype. Discontinued records are kept deliberately: a rifle built in 2004 wears parts nobody sells today.

  • integer

    How many records fall in this bucket.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

Returns what share of records carry each major specification field, as a percentage of the catalog.

GET/v1/stats/field-coverage

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object[]

    The response payload.

  • string

    Which column the row is about, named as the database names it.

  • number

    Share of records, 0 to 100.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Covers the core spec fields: weight_empty_g, barrel_length_mm, action_type, magazine_capacity, effective_range_m, frame_material, year_introduced, country_of_origin, description, height_mm, width_mm, and muzzle_velocity_mps.

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

Returns how the catalog is distributed across manufacturers, categories, and countries.

GET/v1/stats/catalog-coverage

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object

    The response payload.

  • integer

    Total records matching the query across every page.

  • number

    Percentage of firearms carrying at least one image.

  • number

    Percentage of firearms carrying at least one recorded specification.

  • number

    Percentage of firearms with at least one caliber recorded.

  • number

    Percentage of firearms with an unloaded weight recorded.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

Returns the cartridges chambered by the most firearms.

GET/v1/stats/calibers/popular

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • integerstandard20

    How many to return

    Bereich
    1 – 100
    Beispiel

  • object[]

    The response payload.

  • string

    Slug of the cartridge.

  • string

    Display name, as the maker writes it.

  • string | null

    NATO designation where the cartridge has one. Null otherwise.

  • integer

    How many catalogued firearms chamber it.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

Returns the manufacturers with the most firearms in the catalog.

GET/v1/stats/manufacturers/prolific

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • integerstandard20

    How many to return

    Bereich
    1 – 100
    Beispiel
  • string

    Restrict to a category slug

    Beispiel

  • object[]

    The response payload.

  • string

    Slug of the manufacturer.

  • string

    Display name, as the maker writes it.

  • string | null

    ISO 3166-1 alpha-2 code of where they are based.

  • integer

    How many catalogued firearms they make.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

Returns the firearm count per category, with the mean weight, magazine capacity and barrel length of each.

GET/v1/stats/by-category

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object[]

    The response payload.

  • string

    Slug of the category.

  • string

    Display name, as the maker writes it.

  • integer

    How many catalogued firearms are in it.

  • number | null

    Mean unloaded weight in grams across the category, over the firearms that record one.

  • number | null

    Mean magazine capacity across the category, over the firearms that record one.

  • number | null

    Mean barrel length in millimetres across the category, over the firearms that record one.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichStudio+

Returns the firearms introduced in one decade, for charting output over time.

GET/v1/stats/by-era

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Decade to report on, formatted like "1990s"

    Beispiel

  • object

    The response payload.

  • integer

    Firearms introduced in the decade.

  • number | null

    Mean unloaded weight in grams, over those that record one.

  • number | null

    Mean magazine capacity, over those that record one.

  • number | null

    Mean barrel length in millimetres, over those that record one.

  • integer | null

    Earliest introduction year inside the decade that any record carries.

  • integer | null

    Latest introduction year inside the decade that any record carries.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Studio tier or higher.

Decade must be a string like "1940s", "1990s", "2020s".

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichStudio+

Returns the material distribution for each major component: frame, slide, barrel, and stock.

GET/v1/stats/materials

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object

    The response payload.

  • object[]

    Frame materials, and how many firearms use each.

  • string

    The material as recorded on the firearm.

  • integer

    How many records fall in this bucket.

  • object[]

    Slide materials, and how many firearms use each.

  • string

    The material as recorded on the firearm.

  • integer

    How many records fall in this bucket.

  • object[]

    Barrel materials, and how many firearms use each.

  • string

    The material as recorded on the firearm.

  • integer

    How many records fall in this bucket.

  • object[]

    Stock materials, and how many firearms use each.

  • string

    The material as recorded on the firearm.

  • integer

    How many records fall in this bucket.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Studio tier or higher.

Materials are sorted by count descending within each component.

Firearms without a value for a given component are excluded from that breakdown.

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichStudio+

Returns every firearm adopted by operators in one country, with the adopting organisation and year.

GET/v1/stats/adoption/by-country

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    ISO 3166-1 alpha-2 country code

    Max. Länge
    10
    Beispiel

  • object[]

    The response payload.

  • integer

    Numeric id of the adoption record itself, not of the firearm.

  • string | null

    The organisation that adopted the firearm.

  • string | null

    Kind of operator: one of military, law_enforcement, civilian, paramilitary, special_forces, private_security, training.

  • integer | null

    Year the operator adopted it. Null where the date is unrecorded.

  • string | null

    Military or standards designation for the load, e.g. M882.

  • string

    Slug of the adopted firearm.

  • string

    Display name of the firearm.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Studio tier or higher.

Country code must be a valid ISO 3166-1 alpha-2 code.

Results include military, police, and civilian adoption records.

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichStudio+

Returns the firearms adopted by operators of one type, e.g. every military adoption.

GET/v1/stats/adoption/by-type

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Operator type

    Akzeptiert
    Beispiel

  • object[]

    The response payload.

  • string

    Slug of the adopted firearm.

  • string

    Display name of the firearm.

  • integer

    How many operators of this type adopted it.

  • string[]

    ISO 3166-1 alpha-2 codes of the countries those operators belong to.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Studio tier or higher.

Valid types are military, police, and civilian.

Results are sorted by adoption count descending.

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

Returns the firearm count per action type across the catalog.

GET/v1/stats/action-types

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • string

    Restrict to a category slug

    Beispiel

  • object[]

    The response payload.

  • string | null

    The action as stored, and the value to send as action_type when filtering.

  • integer

    How many records fall in this bucket.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Results are sorted by count descending.

Percentages are relative to the total firearms matching the filter (or all firearms if no filter).

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichBuilder+

Returns how often each catalogued feature appears across firearms.

GET/v1/stats/feature-frequency

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • string

    Restrict to a category slug

    Beispiel
  • integerstandard50

    How many to return

    Bereich
    1 – 100
    Beispiel

  • object[]

    The response payload.

  • string

    The feature as stored, and the value to send as feature to /v1/firearms/by-feature.

  • integer

    How many records fall in this bucket.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Builder tier or higher.

Features are extracted from firearm specification fields.

Results are sorted by count descending.

Mindeststufe
Builder+
Monatskontingent
25,000/mo
Anfragerate
60/min
Tageslimit
2,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichStudio+

Returns how often each cartridge was chambered per period, for charting which calibers rose and fell.

GET/v1/stats/caliber-popularity-by-era

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • string

    Earliest decade, formatted like "1940s"

    Beispiel
  • string

    Latest decade, formatted like "2020s"

    Beispiel

  • object[]

    The response payload.

  • string

    The decade this row covers, e.g. 1940s.

  • object[]

    The cartridges chambered by firearms introduced in this decade.

  • string

    Slug of the cartridge. Resolve against /v1/calibers/{id}.

  • string

    Display name of the cartridge.

  • integer

    How many firearms this row covers.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Studio tier or higher.

Decade format must be a string like "1940s", "1990s", "2020s".

Calibers within each decade are sorted by count descending.

Only the top 10 calibers per decade are returned.

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.