XML Feed Specification

AmmoSeek.com lists ammunition, reloading supplies (bullets, brass, primers, powder, reloading_misc), magazines, and guns.

In order to list your products, AmmoSeek need a data feed (in XML or JSON format) which describes each in-stock product you have for sale.

A data feed is simply a text file that described each individual item's data. It should reside on a web server where we can access it at any time. For example: http://yourdomain.com/xmlfeed.php (for live feeds) or http://yourdomain.com/xmlfeed.xml (for feeds generated at least every 5 minutes).

As you develop your feed, you can use our Feed Tester to verify that things look correct.

Is this too technical? Need help with your feed?
Jump to the help suggestions below.

Minimum Requirements

The format of the data feed isn't as important as the data it contains. However, a feed in our format will get your products added to our site very quickly, whereas other formats will require some time for us to properly parse it.

To meet our requirements:

  1. The feed must be real-time or updated at least every 5 minutes.
  2. The feed should include only in-stock/available products, or clearly indicate whether the product is in-stock or not by a field like <qty_available>72</qty_available> or <availability>in stock</availability>. *
  3. Each record in the feed should contain an indicator of the product type the record contains. Product types we support, as described below, are:
    • "ammunition" - only loaded ammo and blanks
    • "magazines" - only magazines (no parts, tools, or loaders of any kind: springs, base plates, followers, moon clips, speed loaders, etc)
    • "guns" - only fully-assembled firearms, minus muzzle loaders - no parts of any kind: uppers, lowers, grips, etc
    • "bullets" - projectiles for reloading ammunition
    • "brass" - for reloading ammunition
    • "primers" - for reloading ammunition
    • "powder" - for reloading ammunition (no muzzloading items)
    • "reloading_misc" - dies, presses, etc - only items used for reloading ammunition - not a catch-all category for other products
    This indicator of product type can be omitted if you are only selling one product type and do not plan to expand in the future.
  4. Our system is designed to read in one feed per retailer. Therefore, if you are going to list multiple product types (e.g. ammunition, magazines, primers, etc), all products should appear in the same data feed (with the main different being the value of the <type> field indicating the product type).
  5. When one exists, each product should include a UPC or MPN, either in the <upc> field or in the product title (<title>) somewhere.
  6. All items listed in the feed should be purchasable by the general public without qualification (i.e. no "membership" or any other purchase required). If you do offer a lower price with a membership, the higher (non-member) price is what should appear in the data feed.
  7. The <brand> field should contain the brand name of the product. Often this is the name of the manufacturer.
    • If the ammo contains Federal Brass and Nosler bullets, but your company remanufactured/reloaded it, then the <brand> field should contain your company's name, or "factory reload".
    • In this day and age with companies buying out other companies, the best rule of thumb is to supply us with the <brand> name most prominently displayed on the box. This means that American Eagle ammo should be labeled as such, rather than 'Federal'. And Sellier and Bellow ammo should be labeled as such rather than Magtech. Blazer rather than CCI. Lawman rather than Speer. Frontier rather than Hornady. Etc, etc, etc.
  8. Purchase limits (for ammo): if there is a limit to the number of boxes that a customer can purchase, and the limit corresponds to less than 1000 rounds, the XML record should include a <purchaselimit> field, containing an integer equal to the maximum number of boxes one may purchase. (A <purchaselimit> of 0 (or absence of this field) would indicate no limit). Alternatively, you can put "N box limit" in the product title (where N is the maximum number of boxes one can purchase). Remember, this rule only applies to limits of less than 1,000 rounds where the limit is set by policy, not simply by a low supply in stock.
  9. Minimum purchases (for ammo): if the customer must purchase a minimum number of units, it's best to simply fill in the <numrounds> and <price> fields with the total number of rounds and total price that constitutes the minimum. For example if you have a 50rd box for $9.99 but you require a minimum purchase of 10 boxes, then the <numrounds> should be set to "500 and the <price> set to "99.90". Alternatively, you can populate a <minpurchase> field with the minimum number of units (in this case 10) and we'll do the math for you before posting the item to our listings. (In lieu of using a <minpurchase> field, you can add "N box minimum" to the product title, where N is the minimum number of boxes the customer must purchase).
  10. Ammo condition: if the ammunition is not considered 'factory new', the XML record should contain a field called <condition> which would have a value of "remanufactured", "seconds" or "surplus" (typically for military surplus ammo). A condition of "new" is assumed if not otherwise specified. Alternatively, the terms 'remanufactured', 'military surplus', or 'seconds' (or "blemished") can be added to the product <title>. NOTE: For our purposes, the terms "reloaded" and "remanufactured" are synonymous.
  11. Ammo casing: if the case is not made of brass, there should be a <casing> field (valid values are 'aluminum', 'steel', 'brass', 'NAS3', or 'composite'). Alternatively, the words 'steel case' or 'aluminum case' can be added to the product <title>. Note that our system will assume that ammunition has a brass case unless your feed indicates otherwise.
  12. Each record in the feed should contain, at minimum, the information listed in the tabs below for each product type.

The feed will contain a list of records. Each record in the data feed will correspond to a single product in your catalog, and will point directly to the product page where the product can be purchased. Each record must contain at least the following: (shown for each product type we list)

  • product title
  • URL to the product page
  • price
  • caliber (can be part of product title) matching one from this list
  • number of rounds for given price
  • brand name
  • indication of a purchase limit, if applicable. See above.
  • indication of casing, if not brass. See above.
  • indication of condition, if not new (e.g. remanufactured). See above.
  • product title
  • URL to the product page
  • price
  • bullet diameter - in <caliber> field or can be part of product title if clearly spelled out (e.g .243" diam.)
  • count (number of bullets for given price)
  • brand name
  • product title
  • URL to the product page
  • price
  • caliber (can be part of product title) matching one from this list
  • count (number of casings)
  • brand name
  • product title
  • URL to the product page
  • price
  • count (number of primers for given price)
  • brand name
  • product title
  • URL to the product page
  • price
  • brand name
  • product title
  • URL to the product page
  • price
  • count (how many of the item for given price)
  • brand name
  • product title
  • URL to the product page
  • price
  • caliber (can be part of product title) matching one from this list
  • count (number of mags for given price)
  • brand name
  • product title
  • URL to the product page
  • price
  • gun (handgun, rifle, shotgun)
  • caliber (can be part of product title) matching one from this list
  • brand name

NOTE: We only list full-assembled guns. No gun parts, even if some government entity deems the part to be a 'firearm'.

If the record is missing any of these, it will be skipped over in processing (and the product will be excluded from our site).

There are other items we need, but are not show-stoppers: UPC, number of grains, and shot size and shell length (for shotgun ammo). Please bear in mind that the more specific you can be with each product, the better chance that users entering specific search criteria will find your products.

Also of critical importance is:

  • The feed should only contain in-stock items, or each record should have a field that shows whether the item is in-stock or otherwise, so we can filter out the ones that are not in stock. ("In stock" means that the customer can order the item immediately, and it will be ready for shipping within a reasonable timeframe -- usually within a week at most.. This is opposed to "backordered", "backorderable", "delayed", "temporarily unavailable", etc).
    • NOTE: We do make allowances for listing very large quantities of ammunition (e.g. a pallet) that requires additional time for shipping. For these to be listed on AmmoSeek.com, the product title should clearly state something along the lines of "Made to order; expect 4-6 weeks for shipping"
  • The feed should be updated in real-time (meaning that it pulls from your product inventory when we request the feed). Or, if the feed is a flat file, it should be updated at least every 5 minutes -- and preferably more often. A feed updated less often will not suffice because one of the biggest selling points of AmmoSeek.com is that we only list in-stock products. And depending on your inventory and how quickly you move items, we could potentially be listing items that are not in stock, an event that would disqualify your feed. It's important that the information in your data feed match the information on your web site at all times.
While we prefer that the data feed be in our format (as described below), other feed formats (such as the one you'd get from Google Store) may also suffice, as long as the requirements listed above are met.

Here are XML examples for each of the types of products we list:

Example XML for:
  1. a 50-round box of .38 Special
  2. a 400-round case of .308 Marlin Express
  3. 250 rounds of 12 Gauge 2 3/4" OO-Buck shotgun shells
  4. a 5-pack of 12 Gauge 2-3/4" Lead Rifled Slugs
<productlist retailer="yoursiteURL.com"> <product> <type>ammunition</type> <title><![CDATA[.38 Special Federal LE Tactical Hydra-Shok 147gr. 50rds +P+ HP]]</title> <brand><![CDATA[Hornady]]></brand> <caliber><![CDATA[38 Special]]></caliber> <url><![CDATA[http://yoursiteURL.com/products/item12345.html]]></url> <upc>054041163255</upc> <grains><![CDATA[110]]></grains> <price><![CDATA[21.99]]></price> <rebate><![CDATA[3.00]]></rebate> <numrounds><![CDATA[50]]></numrounds> <shot_size><![CDATA[]]></shot_size> <shell_length><![CDATA[]]></shell_length> <purchaselimit>10</purchaselimit> <condition>new</condition> <casing>brass</casing> </product> <product> <type>ammunition</type> <brand><![CDATA[Remington]]></brand> <caliber><![CDATA[308 Marlin Express]]></caliber> <title><![CDATA[Remington 308 Marlin Express 150 Grain Case of 400]]></title> <url><![CDATA[http://yoursiteURL.com/products/item23456.html]]></url> <upc>054041163255</upc> <grains><![CDATA[150]]></grains> <price><![CDATA[429.99]]></price> <numrounds><![CDATA[400]]></numrounds> <shot_size><![CDATA[]]></shot_size> <shell_length><![CDATA[]]></shell_length> <purchaselimit></purchaselimit> <condition>new</condition> <casing>brass</casing> </product> <product> <type>ammunition</type> <brand><![CDATA[Hornady]]></brand> <caliber><![CDATA[12 GAUGE]]></caliber> <title><![CDATA[Hornady TAP LightMagnum 12 Gauge 2 3/4" 00 Buckshot Case of 250]]></title> <url><![CDATA[http://yoursiteURL.com/products/item34567.html]]></url> <upc>054041163255</upc> <grains><![CDATA[]]></grains> <price><![CDATA[249.99]]></price> <numrounds><![CDATA[250]]></numrounds> <shot_size><![CDATA[OO]]></shot_size> <shell_length><![CDATA[2 3/4"]]></shell_length> <purchaselimit></purchaselimit> <condition>new</condition> </product> <product> <type>ammunition</type> <brand><![CDATA[Brenneke]]></brand> <caliber><![CDATA[12 GAUGE]]></caliber> <title><![CDATA[Brenneke USA Black Magic Short Magnum 12 Gauge 2-3/4" Lead Rifled Slug Box of 5]]></title> <url><![CDATA[http://yoursiteURL.com/products/item45678.html]]></url> <upc>054041163255</upc> <grains><![CDATA[]]></grains> <price><![CDATA[9.79]]></price> <numrounds><![CDATA[5]]></numrounds> <shot_size><![CDATA[slug]]></shot_size> <shell_length><![CDATA[2 3/4"]]></shell_length> <purchaselimit></purchaselimit> </product> </productlist>
Example XML for:
  1. a box of 100 Hornady Full Metal Jacket Bullets .243 / 6mm 80gr FMJ
<productlist retailer="yoursiteURL.com"> <product> <type>bullets</type> <brand><![CDATA[Hornady]]></brand> <title><![CDATA[Hornady Full Metal Jacket Bullets - Hornady 6mm 80 gr FMJ]]></title> <url><![CDATA[http://www.yoursiteURL.com/reloading/item24378.html]]></url> <upc>054041163255</upc> <price><![CDATA[22.99]]></price> <caliber><![CDATA[243/6mm (.243)]]></caliber> <grains><![CDATA[80]]></grains> <count><![CDATA[100]]></count> </product> </productlist>
Example XML for:
  1. a bag of 100 Starline 50 Action Express Pistol Brass
<productlist retailer="yoursiteURL.com"> <product> <type>brass</type> <brand><![CDATA[STARLINE, INC]]></brand> <title><![CDATA[Starline Brass - Starline 50 AE Pistol Brass 100/Bag]]></title> <url><![CDATA[http://www.yoursiteURL.com/item12098.html]]></url> <upc>054041163255</upc> <price><![CDATA[37.99]]></price> <caliber><![CDATA[50 Action Express]]></caliber> <count><![CDATA[100]]></count> </product> </productlist>
Example XML for:
  1. Remington Small Pistol Primers
<productlist retailer="yoursiteURL.com"> <product> <type>primers</type> <brand><![CDATA[Remington]]></brand> <title><![CDATA[Remington Primers 1-1/2 Small Pistol X22600 1000 Count 47700095011]]></title> <url><![CDATA[http://www.yoursiteURL.com/item112592.html]]></url> <upc>054041163255</upc> <price><![CDATA[64.99]]></price> <count><![CDATA[1000]]></count> </product> </productlist>
Example XML for:
  1. Accurate Powder No. 9 8lbs
<productlist retailer="yoursiteURL.com"> <product> <type>powder</type> <brand><![CDATA[Accurate]]></brand> <title><![CDATA[Accurate No. 9 8lb Smokeless Powder]]></title> <url><![CDATA[http://www.yoursiteURL.com/item112592.html]]></url> <upc>054041163255</upc> <price><![CDATA[127.49]]></price> </product> </productlist>
Example XML for:
  1. Lee 9mm 365 Cal .46-.60 Long Bullet Feed Die Kit
<productlist retailer="yoursiteURL.com"> <product> <type>reloading_misc</type> <brand><![CDATA[Lee]]></brand> <title><![CDATA[Lee 9mm 365 Cal .46-.60 Long Bullet Feed Die Kit]]></title> <url><![CDATA[http://www.yoursiteURL.com/item112592.html]]></url> <upc>054041163255</upc> <price><![CDATA[26.99]]></price> <count><![CDATA[1]]></count> </product> </productlist>
Example XML for:
  1. 1911 Cobra Magazines - 1911 7rd Magazine, 3-Pack
<productlist retailer="yoursiteURL.com"> <product> <type>magazines</type> <brand><![CDATA[Tripp Research, Inc]]></brand> <title><![CDATA[1911 Cobra Magazines - 1911 7rd Magazine 3-pack]]></title> <url><![CDATA[http://www.yoursiteURL.com/item1234.html]]></url> <upc>054041163255</upc> <price><![CDATA[127.59]]></price> <count><![CDATA[3]]></count> </product> </productlist>
Example XML for:
  1. Springfield Armory XD 40SW 3" Black Sub Compact Pistol XD9802HC
<productlist retailer="yoursiteURL.com"> <product> <type>guns</type> <caliber><![CDATA[.40 S&W]]></caliber> <brand><![CDATA[Springfield Armory]]></brand> <title><![CDATA[Springfield Armory XD 40SW 3" Black Sub Compact Pistol XD9802HC]]></title> <url><![CDATA[http://www.yoursiteURL.com/item9301.html]]></url> <upc>054041163255</upc> <price><![CDATA[459.85]]></price> </product> </productlist>
FINAL NOTES (some important items are worth repeating)
  • The feed should be updated in real-time, or at least every five minutes.
  • Once we send the request to your server to fetch your data feed, it must respond within 90 seconds, or our system will give up. We typically fetch all data feeds every 3 minutes.
  • The feed should include only in-stock/available products, or clearly indicate whether the product is in-stock or not by a field like <qty_available>72</qty_available> or <availability>in stock</availability>.
  • When applicable, each product should include a UPC or MPN, either in the <upc> field or in the product title (<title>) somewhere.
  • You must list all products of a given type. For example, if you choose to list ammunition with us, the feed must include all in-stock ammo your store sells, not only a subset.
  • The <title> field must be as detailed as possible, but not overly lengthy (160 characters or less)..
  • The fields <shot_size>, and <shell_length> need only be populated for shotgun ammo.
  • For shotgun ammo, the <shot_size> should either be the shot size (e.g. #2, OO, etc) or "slug" if it's a slug. If it contains multiple shot sizes, you can list them all like "4&5" or "7,8,9".
  • For fields that have special characters such as "&", the whole field should be escaped with the CDATA method as in the example.

    e.g. 40 S&W would be:

    <![CDATA[40 S&W]]> It would be acceptable for all data fields to be escaped in this way.
  • The caliber in the <caliber> field should be as specific as possible so it can match one of the calibers listed here: Caliber List. For example, a caliber such as "22" will not suffice as it is ambiguous; it could be .22 Long, .22LR, .22 BB, .22 CB, .22 Short, .22 Win Auto, .22 WMR, or .22 Win Rimfire.
  • "Combo packs" of varying calibers, types, or quantities should be excluded from the feed.
  • If you offer several quantity variations for the same product (say, 100/250/500/1000/2500/5000 round options), we require that you limit the variations that you include in your feed to three (perhaps the highest, the lowest, and one in the middle) so that it does not appear that you're spamming our search results. Each variation will be a separate XML record, and will have appropriate <price> and <numrounds> fields populated. For items other than ammo, this limit isn't strictly enforced, within reason.
  • If you offer bulk discounts: For best results, this should appear in the data feed as multiple records. Examples:
    • You offer a per-box discount for, say, 20+ boxes ordered.
      You'll have one record with a normal product title and the price for one box. Then, you'll have another record with a product title that includes "(Price per box for orders of 20+ boxes)" and the price is the discounted per-box price. The <numrounds> field should stil be a the number of rounds per box.
    • You offer a discount for a case of, say, 20 boxes.
      You'll have one record with a normal product title and the price for one box. Then, you'll have another record with a product title that includes "(Price for case of 20 boxes)" and the price for the entire case. The <numrounds> field should be a total number of rounds in the case.
  • All products included in the feed must be "unconditionally available". i.e. purchasable on their own, without additional purchase requirements. (For example, a 1-box limit combined with a $99 minimum order does not meet this requirement). Similarly, all products included in the feed must be purchasable by the general public. Please exclude items available only to "law enforcement", paid subscribers, or club members. Also all items must be orderable directly from your online store, and deliverable to customer's home or FFL (i.e. no "in-store only" items).
  • Free shipping: If you have specific items that will ship for free, please add the words "FREE SHIPPING" to the product title, and our system will denote this in the shipping column in our search results.
  • Conditionally Free shipping: If you have specific items that will ship for free when a condition is met (e.g. free shipping on orders of 5+ boxes) please indicate this in the product title, and we'll denote this appropriately with an icon in the shipping column in our listings.
  • Rebates - You can use the <rebate> field to indicate the amount the customer could get back (after the sale) via a mail-in rebate or similar mechanism.
  • E-Commerce/Shopping Cart Support (and other external feed help):
    • 3rd Party Developer - the following developers have experience with our feed requirements and should be able to help you out:
      • Dan Brammall (dan@brammall.net)
    • Garidium, LLC - for sites running on a Wordpress/WooCommerce platform. Contact Gary at sales@garidium.com
    • Product XML Feeds for WooCommerce Pro - allows you to create a feed meeting all of AmmoSeek's requirements
    • CTX Feed - plugin for WooCommerce. WARNING: This may default to a 60 minute feed generation interval. If so, you must contact the developer and request a change to allow for a 5-minute update interval.
    • Coreware - full service eCommerce solution with AmmoSeek integration
    • Feedonomics eCommerce product feed solution
    • AmmoReady - [only if you manage your own inventory, and do not drop-ship directly from distributors] a complete Gun Ecommerce/Point-of-Sale/Dropshipping solution, including an add-on that generates an AmmoSeek-ready data feed
    • DataFeedWatch - DO NOT USE - DataFeedWatch cannot be used, because even if you purchase their most expensive plan, the best they'll do is update your feed every 60 minutes, which is nowhere close to what we need)
    • FeedGeni - DO NOT USE - FeedGeni cannot be used; maximum refresh time is 1-2 hours.

    Please note these are 3rd-party plugins and services and that we are not able to provide assistance or advice with respect to configuration on your end.

Please contact us if you have any questions.

Do you have a feed ready for us? Sign up here!