# IMA Militaria Scraper - Military Antiques & Collectibles (`lulzasaur/imausa-scraper`) Actor

Scrape International Military Antiques (ima-usa.com): original WWII & WWI militaria, antique guns, swords, helmets, medals. Get title, era/conflict, nation, category, price, availability (most items one-of-a-kind), image, URL. Search, browse collections, or crawl the catalog. Fast JSON API.

- **URL**: https://apify.com/lulzasaur/imausa-scraper.md
- **Developed by:** [lulz bot](https://apify.com/lulzasaur) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 militaria items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## IMA Militaria Scraper — International Military Antiques (ima-usa.com)

Scrape **International Military Antiques**, one of the world's largest dealers of original militaria and antique arms: WWII and WWI collectibles, antique guns, swords, bayonets, helmets, medals, uniforms, field gear and more. Most original items are **one-of-a-kind** — this scraper is ideal for tracking new arrivals, monitoring availability before an item sells, and building militaria pricing datasets.

### What you get

One structured record per item:

| Field | Description |
|-------|-------------|
| `title` | Full item title (e.g. "Original German WWII Clasp to the Iron Cross First Class") |
| `conflict` | Conflict tag: WWII, WWI, American Civil War, Vietnam, Napoleonic, Revolutionary War, ... |
| `era` | Era/century tag: 18th Century, 19th Century, 20th Century, Ancient, ... |
| `nation` | Country of origin: German, British, U.S., Japanese, French, ... |
| `category` / `categories` | Item categories (Awards Medals Badges Insignia, Field Gear, Bayonets, Helmets, ...) |
| `manufactureType` | "Original Items" or reproduction |
| `oneOfAKind` | `true` for unique original pieces (most of the store) |
| `price` / `compareAtPrice` / `priceRange` | Price in USD + store price bucket |
| `available` / `availability` | In Stock / Sold Out — one-of-a-kind items never restock |
| `shippingAvailability` | International / USA-only shipping eligibility |
| `sku`, `vendor`, `variantCount` | Inventory metadata |
| `description` | Plain-text item description (first 1000 chars) |
| `image`, `imageCount` | Primary photo URL + photo count |
| `url`, `handle`, `publishedAt` | Product link + listing date |

### Three ways to scrape

1. **Search** — set `searchQueries` (e.g. `["german helmet", "luger", "civil war sword"]`). Each query returns up to 10 best matches.
2. **Collections** — set `collections` to any collection handle or URL, e.g. `wwii-militaria` (1600+ items), `wwi-military-antiques`, `american-civil-war`, `vietnam`, `napoleonic`, `revolutionary-war`, `bayonets`, `antique-handguns`, `german-militaria`, `british-militaria`. Crawls the whole collection with pagination.
3. **Full catalog** — leave both empty to crawl the entire store newest-first (~2,800+ live items).

### Example input

```json
{
    "searchQueries": ["iron cross", "m1 helmet"],
    "collections": ["wwii-militaria"],
    "maxResults": 200,
    "inStockOnly": true,
    "originalOnly": true
}
```

### Example output record

```json
{
    "title": "Original German WWII Clasp to the Iron Cross First Class 1939",
    "conflict": "WWII",
    "era": "20th Century",
    "nation": "German",
    "category": "German Awards Medals Badges Insignia",
    "manufactureType": "Original Items",
    "oneOfAKind": true,
    "price": 395,
    "currency": "USD",
    "availability": "In Stock",
    "shippingAvailability": "International",
    "image": "https://cdn.shopify.com/s/files/1/1524/1342/files/ONSV26CC225__01.jpg",
    "url": "https://www.ima-usa.com/products/original-german-wwii-clasp-to-the-iron-cross-first-class-1939"
}
```

### Filters

- `minPrice` / `maxPrice` — USD price band
- `inStockOnly` — skip sold items
- `originalOnly` — original period pieces only (exclude reproductions)

### Use cases

- **Collectors**: alert on new one-of-a-kind arrivals matching your want list before they sell
- **Dealers & appraisers**: comp pricing for original militaria by conflict, nation and category
- **Market analytics**: track sell-through of WWII/WWI collectibles and antique arms
- **Aggregators**: feed structured militaria listings into marketplaces or price guides

### Performance

Uses the store's fast JSON endpoints directly — no browser, no proxies needed. Hundreds of items per minute; sub-10-second runs for typical searches.

### Notes

This actor scrapes publicly available listing data only. IMA items are historical collectibles; antique firearms sold there are pre-1899 antiques or demilitarized display pieces per the seller's descriptions.

# Actor input Schema

## `searchQueries` (type: `array`):

Search terms (e.g. 'german helmet', 'luger', 'civil war sword', 'iron cross'). Each query returns up to 10 best-matching items (Shopify predictive search limit). Leave empty (with no collections) to crawl the full catalog newest-first instead.

## `collections` (type: `array`):

Collection handles or URLs to crawl in full (e.g. 'wwii-militaria', 'wwi-military-antiques', 'american-civil-war', 'vietnam', 'napoleonic', 'bayonets', 'antique-handguns', 'swords', 'german-militaria'). Crawled before search queries.

## `maxResults` (type: `integer`):

Maximum number of items to scrape (one record per product).

## `minPrice` (type: `number`):

Filter: only return items at or above this price (USD).

## `maxPrice` (type: `number`):

Filter: only return items at or below this price (USD).

## `inStockOnly` (type: `boolean`):

Only return items currently available for purchase. Most IMA original items are one-of-a-kind, so sold items never restock.

## `originalOnly` (type: `boolean`):

Only return original period items (exclude reproductions).

## `proxyConfiguration` (type: `object`):

Proxy settings. IMA works without proxies (open Shopify JSON endpoints).

## Actor input object example

```json
{
  "searchQueries": [
    "helmet",
    "bayonet"
  ],
  "maxResults": 50,
  "inStockOnly": false,
  "originalOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "helmet",
        "bayonet"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lulzasaur/imausa-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQueries": [
        "helmet",
        "bayonet",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("lulzasaur/imausa-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "helmet",
    "bayonet"
  ]
}' |
apify call lulzasaur/imausa-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lulzasaur/imausa-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BNJqj2V4E5no1ii1c/builds/Eec7Pk7y40gfsbfjy/openapi.json
