Factoriodex API

Factoriodex is an API that provides data and information about the game Factorio, by Wube Software LTD. It offers access to data about items, research, and enemies.

Factoriodex offers a fully documented public API for developers to use in their own apps or websites.

📌Important Usage Notes

The API is completely free and while not required, it is always appreciated if you mention somewhere that your app or site is making use of the Factoriodex API.

🔑Authorization & Rate Limiting

One of the most frequent inquiries concerns the need for API Keys. The API is completely public and does not require any authorization or API Key. You can start using it immediately!

To maintain server performance, Factoriodex enforces rate limits on API calls. Exceeding these limits results in a temporary block with a 429 HTTP status code, automatically lifted after a set period. All users face the same limits.

The API fully supports CORS, allowing requests directly from users' browsers or apps. This approach minimizes the likelihood of encountering rate limiting problems.

🙋‍♂️Help & Support

If you encounter any issues, need assistance with your implementation, or simply want to share how you're using the API, don't hesitate to reach out.

You can contact me, Eric, through the contact channels at ericlighthall.com. I'm always eager to help!

📢Updates

The API may receive updates in the future; however, these are not guaranteed. Keep an eye on the website for any changes that might enhance functionality or extend the range of features.


Enemies

GET /api/enemies

Get a paged list of all enemies matching any number of criteria, all of the following filtering parameters are optional

Parameter Description
type (optional, string)
Only returns enemeies of the specified type.
name (optional, string)
Returns enemies containing 'name'.
minDamage (optional, number)
Returns enemies with a damage value greater than this amount.
Min: 7
maxDamage (optional, number)
Returns enemies with a damage value less than this amount.
Max: 96
minSpeed (optional, number)
Returns enemies with a speed value greater than this amount.
Min: 32.4
maxSpeed (optional, number)
Returns enemies with a speed value less than this amount.
Max: 64.8
minRange (optional, number)
Returns enemies with an attack range value greater than this amount.
Min: 1
maxRange (optional, number)
Returns enemies with an attack range value less than this amount.
Max: 48

Example Request

// Javascript
fetch('/api/enemies?type=biter&name=big?minRange=20')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

Sample Response

[
    {
        "name": "Big Worm",
        "description": "Big worms are not as much more dangerous as resilient. They are almost immune to common gunfire of any sort.",
        "attributes": {
            "health": 750,
            "range": 38,
            "attack_speed": 0.66,
            "area_of_effect_size": 1.75,
            "damage": {
                "type": "Acid",
                "amount": 72
            },
            "acid_puddle": {
                "lifetime": 32,
                "damage_per_second": 259,
                "effect": {
                    "movement_vehicle_speed_modifier": 40,
                    "duration": 2
                }
            }
        },
        "resistances": {
            "explosion": {
                "damage_reduction": 10,
                "resistance_percentage": 30
            },
            "fire": {
                "damage_reduction": 3,
                "resistance_percentage": 70
            },
            "physical": {
                "damage_reduction": 10,
                "resistance_percentage": 0
            }
        }
    }
]

Items

GET /api/items

Returns a list of game items with the specified parameters.

Parameter Description
name (optional, string)
The name of the item to search for.
category (optional, string)
The category of the item to filter by.
dimensions (optional, string)
The dimensions of the item (e.g., 1x1, 2x2).
maxCraftingTime (optional, number)
Only returns items with a crafting time less than this value

Example Request

// Javascript
fetch('/api/items?name=armor&type=combat')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

Sample Response

[
    {
        "name": "Light armor",
        "type": "item",
        "category": "combat"
    },
    {
        "name": "Heavy armor",
        "type": "item",
        "category": "combat"
    },
    {
        "name": "Modular armor",
        "type": "item",
        "category": "combat"
    },
    {
        "name": "Power armor",
        "type": "item",
        "category": "combat"
    },
    {
        "name": "Power armor MK2",
        "type": "item",
        "category": "combat"
    }
]

Research

GET /api/research
Parameter Description
name (optional, string)
The name of the research item to search for.
sciencePacks (optional, string)
The science pack types required for the research, separated by commas.

Example Request

// Javascript
fetch('/api/research?name=automation')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

Sample Response

[
    {
        "name": "Automation",
        "cost": {
            "Automation science pack": 10
        },
        "effects": [
            "Assembling machine 1",
            "Long-handed inserter"
        ]
    },
    {
        "name": "Automation 2",
        "cost": {
            "Automation science pack": 40,
            "Logistic science pack": 40
        },
        "effects": [
            "Assembling machine 2"
        ]
    },
    {
        "name": "Automation 3",
        "cost": {
            "Automation science pack": 150,
            "Logistic science pack": 150,
            "Military science pack": 150,
            "Production science pack": 150
        },
        "effects": [
            "Assembling machine 3"
        ]
    }
]