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.
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:
The feed must be real-time or updated at least every 5 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>. *
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.
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).
When one exists, each product should include a UPC or MPN, either in the <upc> field or in
the product title (<title>) somewhere.
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.
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.
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.
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).
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", "factory 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 'factory seconds' (or "blemished") can be added to the product <title>.
NOTE: For our purposes, the terms "reloaded" and "remanufactured" are synonymous.
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.
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)
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 few days. This is opposed to "backordered", "backorderable", "delayed",
"temporarily unavailable", etc).
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:
a box of 100 Hornady Full Metal Jacket Bullets .243 / 6mm 80gr FMJ
bullets054041163255
Example XML for:
a bag of 100 Starline 50 Action Express Pistol Brass
brass054041163255
Example XML for:
Remington Small Pistol Primers
primers054041163255
Example XML for:
Accurate Powder No. 9 8lbs
powder054041163255
Example XML for:
Lee 9mm 365 Cal .46-.60 Long Bullet Feed Die Kit
reloading_misc054041163255
Example XML for:
1911 Cobra Magazines - 1911 7rd Magazine, 3-Pack
magazines054041163255
Example XML for:
Springfield Armory XD 40SW 3" Black Sub Compact Pistol XD9802HC
guns054041163255
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:
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 - several dozen of our listed retailers employ this 3rd party developer
who does a great job maintaining feeds that conform well to our specifications: Dan Brammall
([email protected]). He should be able to help you out.
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.
ExportFeed plugin for WooCommerce - a plugin for WooCommerce developed by
the folks at ExportFeed.com
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)
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.
* - 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".