{
    "openapi": "3.1.0",
    "info": {
        "title": "LoreaTec Japan business & procurement data APIs",
        "version": "2026-08-16",
        "description": "Free JSON endpoints behind bizsearch.loreatec.jp and japan-tenders.loreatec.jp. Limits: 30 requests/min and 500/day per IP (MCP: 60/1000). Every response carries `attribution`; public reuse requires that attribution and a visible link to the source page. Sources: NTA registries, 調達ポータル, KKJ, gBizINFO, 行政事業レビュー, MIC giteki, Japan Customs, Japan Post.\n\nAI assistants: use the MCP server at https://bizsearch.loreatec.jp/mcp instead (same data as tools).",
        "contact": {
            "name": "LoreaTec",
            "url": "https://loreatec.jp/e/",
            "email": "info@loreatec.jp"
        },
        "termsOfService": "https://bizsearch.loreatec.jp/terms"
    },
    "servers": [
        {
            "url": "https://bizsearch.loreatec.jp",
            "description": "BizSearch"
        },
        {
            "url": "https://japan-tenders.loreatec.jp",
            "description": "Japan Tenders"
        }
    ],
    "paths": {
        "/check.php": {
            "get": {
                "summary": "Verify an invoice registration number (T-number) or corporate number",
                "parameters": [
                    {
                        "name": "num",
                        "in": "query",
                        "required": true,
                        "description": "T + 13 digits, or 13 digits",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Registration status, name, address, corporate number",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/search.php": {
            "get": {
                "summary": "Company search by name, by number (status + licences), or by licence type",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Name (kanji/kana/romaji) or 13-digit number",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "Licence/certification type name (browse mode)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "mode = companies | company | bytype",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/events/api.json": {
            "get": {
                "summary": "Corporate-registry events (new companies, renames, relocations, closures, mergers)",
                "parameters": [
                    {
                        "name": "days",
                        "in": "query",
                        "required": false,
                        "description": "7 | 30 | 90 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "Event code 01,11,12,13,21,22,71,72,81",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "pref",
                        "in": "query",
                        "required": false,
                        "description": "Prefecture name in Japanese",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Company-name filter",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page (100 rows each)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "items[] with type_en/type_ja, names, locations, profile URLs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/giteki/api/verify.json": {
            "get": {
                "summary": "Radio-law (技適) certification lookup",
                "parameters": [
                    {
                        "name": "num",
                        "in": "query",
                        "required": true,
                        "description": "Certification number",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Matching devices",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/address/api/convert.json": {
            "get": {
                "summary": "Japanese address / postal code to English",
                "parameters": [
                    {
                        "name": "zip",
                        "in": "query",
                        "required": false,
                        "description": "7-digit postal code",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Japanese address text",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Prefecture, city, town in kanji and romaji",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/fx/api/latest.json": {
            "get": {
                "summary": "Japan Customs weekly exchange rates (current week)",
                "responses": {
                    "200": {
                        "description": "rates[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/fx/api/{week}.json": {
            "get": {
                "summary": "Japan Customs weekly exchange rates for a given ISO week",
                "parameters": [
                    {
                        "name": "week",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "YYYY-WW"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "rates[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/mcp": {
            "post": {
                "summary": "Model Context Protocol endpoint (JSON-RPC 2.0, Streamable HTTP, stateless)",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "JSON-RPC response (initialize, tools/list, tools/call)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/api/awards/search": {
            "servers": [
                {
                    "url": "https://japan-tenders.loreatec.jp"
                }
            ],
            "get": {
                "summary": "National award search & price benchmark (Japan Tenders API; needs the site X-Api-Key)",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": true,
                        "description": "Japanese keyword(s) in contract titles",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "fy",
                        "in": "query",
                        "required": false,
                        "description": "Fiscal year",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "ministry",
                        "in": "query",
                        "required": false,
                        "description": "p-portal ministry code",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "10-100",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "stats (min/p25/median/p75/max), by_fy, top_suppliers, rows",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/api/projects/{id}/history": {
            "servers": [
                {
                    "url": "https://japan-tenders.loreatec.jp"
                }
            ],
            "get": {
                "summary": "Past awards similar to one tender (incumbent, last price, series)",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "summary, series, matches[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/api/awards/series/{sid}": {
            "servers": [
                {
                    "url": "https://japan-tenders.loreatec.jp"
                }
            ],
            "get": {
                "summary": "One recurrence series with its awards",
                "parameters": [
                    {
                        "name": "sid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "series + awards[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/awards-data/forecast.json": {
            "servers": [
                {
                    "url": "https://japan-tenders.loreatec.jp"
                }
            ],
            "get": {
                "summary": "Predicted re-tenders index (static; per-month files under /awards-data/forecast/YYYY-MM.json)",
                "responses": {
                    "200": {
                        "description": "by_month, ministries, files[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/awards-data/buyers/index.json": {
            "servers": [
                {
                    "url": "https://japan-tenders.loreatec.jp"
                }
            ],
            "get": {
                "summary": "Buyer directory (static; per-buyer files under /awards-data/buyers/{slug}.json)",
                "responses": {
                    "200": {
                        "description": "buyers[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/qual-data/registrations.json": {
            "servers": [
                {
                    "url": "https://japan-tenders.loreatec.jp"
                }
            ],
            "get": {
                "summary": "Bidder-registration windows with today’s status (static, daily)",
                "responses": {
                    "200": {
                        "description": "national, entities[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        },
        "/qual-data/upcoming.json": {
            "servers": [
                {
                    "url": "https://japan-tenders.loreatec.jp"
                }
            ],
            "get": {
                "summary": "Windows opening/closing within 120 days",
                "responses": {
                    "200": {
                        "description": "items[]",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded (Retry-After header)"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "tendersApiKey": {
                "type": "apiKey",
                "in": "header",
                "name": "X-Api-Key",
                "description": "Only the japan-tenders.loreatec.jp /api/* endpoints require the site key (published on its /api page); bizsearch endpoints are open."
            }
        }
    }
}