{
  "openapi": "3.1.0",
  "info": {
    "title": "JapanLanded API",
    "version": "2026-10-15.3",
    "summary": "Estimate the yen cost of buying through a Japan proxy. Estimates only.",
    "description": "Estimates only. Not a quote, not a customs ruling, and not an offer to sell or ship. Confirm fees, prohibitions, and duty with the proxy and with destination customs. Figures can change after the last-verified date. JapanLanded may later earn a commission when someone uses a referral link. Affiliate enrollments are not in place, so outbound links are public pages, not tracked referrals. We do not sell the goods. Names of proxies and products are used to describe them and are their owners' trademarks. No API key. 60 requests per minute per IP. Amounts that are not in the dataset are null. Do not invent replacements.",
    "license": {
      "name": "MIT",
      "url": "https://opensource.org/licenses/MIT"
    }
  },
  "servers": [
    {
      "url": "https://api.japanlanded.com",
      "description": "Not public yet."
    },
    {
      "url": "http://127.0.0.1:8788",
      "description": "Local dev API"
    }
  ],
  "paths": {
    "/v1/health": {
      "get": {
        "operationId": "health",
        "responses": {
          "200": {
            "description": "Dataset version and date."
          }
        }
      }
    },
    "/v1/estimate": {
      "post": {
        "operationId": "estimate",
        "summary": "Landed-cost estimate for one item, for one proxy or every proxy.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "price_jpy",
                  "category",
                  "country"
                ],
                "properties": {
                  "price_jpy": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Merchandise price in yen for one unit."
                  },
                  "quantity": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 20,
                    "default": 1
                  },
                  "category": {
                    "type": "string",
                    "enum": [
                      "figures",
                      "trading_cards",
                      "retro_games",
                      "cameras",
                      "effects_pedals",
                      "sake",
                      "whisky"
                    ]
                  },
                  "weight_g": {
                    "type": "number",
                    "description": "Weight of one unit in grams. Omit only if you accept the unsourced placeholder."
                  },
                  "source_site": {
                    "type": "string",
                    "enum": [
                      "mercari",
                      "yahoo_auctions",
                      "rakuten",
                      "amazon_jp",
                      "surugaya",
                      "digimart",
                      "map_camera",
                      "kitamura",
                      "other"
                    ]
                  },
                  "item_url": {
                    "type": "string",
                    "description": "Not fetched. Echoed back only."
                  },
                  "lithium": {
                    "type": "string",
                    "enum": [
                      "installed",
                      "spare",
                      "none",
                      "unspecified"
                    ]
                  },
                  "alcohol_abv": {
                    "type": "number"
                  },
                  "mains_voltage": {
                    "type": "string",
                    "enum": [
                      "100",
                      "100-240",
                      "unknown",
                      "not_applicable"
                    ]
                  },
                  "length_cm": {
                    "type": "number",
                    "description": "Ignored. Volumetric weight is not calculated."
                  },
                  "width_cm": {
                    "type": "number"
                  },
                  "height_cm": {
                    "type": "number"
                  },
                  "country": {
                    "type": "string",
                    "description": "ISO code or English name. Example: US."
                  },
                  "shipping_method": {
                    "type": "string",
                    "enum": [
                      "ems",
                      "japan_post_small_packet",
                      "japan_post_sal_small_packet",
                      "japan_post_surface_small_packet",
                      "japan_post_air_parcel",
                      "japan_post_sal_parcel",
                      "japan_post_surface_parcel",
                      "dhl"
                    ]
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Omit to compare every proxy in the dataset."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Partial yen sums, shippability, duty notes, sources, and data_as_of."
          },
          "400": {
            "description": "Invalid input."
          },
          "429": {
            "description": "Rate limit."
          }
        }
      }
    },
    "/v1/check": {
      "post": {
        "operationId": "check",
        "summary": "Export check: allowed, conditional, or blocked, with reasons and sources.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "country",
                  "category"
                ],
                "properties": {
                  "country": {
                    "type": "string"
                  },
                  "category": {
                    "type": "string",
                    "enum": [
                      "figures",
                      "trading_cards",
                      "retro_games",
                      "cameras",
                      "effects_pedals",
                      "sake",
                      "whisky"
                    ]
                  },
                  "shipping_method": {
                    "type": "string",
                    "enum": [
                      "ems",
                      "japan_post_small_packet",
                      "japan_post_sal_small_packet",
                      "japan_post_surface_small_packet",
                      "japan_post_air_parcel",
                      "japan_post_sal_parcel",
                      "japan_post_surface_parcel",
                      "dhl"
                    ]
                  },
                  "lithium": {
                    "type": "string",
                    "enum": [
                      "installed",
                      "spare",
                      "none",
                      "unspecified"
                    ]
                  },
                  "alcohol_abv": {
                    "type": "number"
                  },
                  "mains_voltage": {
                    "type": "string",
                    "enum": [
                      "100",
                      "100-240",
                      "unknown",
                      "not_applicable"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shippability result."
          },
          "400": {
            "description": "Invalid input."
          }
        }
      }
    },
    "/v1/proxies": {
      "get": {
        "operationId": "listProxies",
        "responses": {
          "200": {
            "description": "Proxy fee records and referral status."
          }
        }
      }
    },
    "/v1/compare": {
      "post": {
        "operationId": "compare",
        "summary": "Estimate a multi-item cart for each proxy.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "country",
                  "items"
                ],
                "properties": {
                  "country": {
                    "type": "string"
                  },
                  "shipping_method": {
                    "type": "string",
                    "enum": [
                      "ems",
                      "japan_post_small_packet",
                      "japan_post_sal_small_packet",
                      "japan_post_surface_small_packet",
                      "japan_post_air_parcel",
                      "japan_post_sal_parcel",
                      "japan_post_surface_parcel",
                      "dhl"
                    ]
                  },
                  "proxy": {
                    "type": "string"
                  },
                  "items": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "price_jpy": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "Merchandise price in yen for one unit."
                        },
                        "quantity": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 20,
                          "default": 1
                        },
                        "category": {
                          "type": "string",
                          "enum": [
                            "figures",
                            "trading_cards",
                            "retro_games",
                            "cameras",
                            "effects_pedals",
                            "sake",
                            "whisky"
                          ]
                        },
                        "weight_g": {
                          "type": "number",
                          "description": "Weight of one unit in grams. Omit only if you accept the unsourced placeholder."
                        },
                        "source_site": {
                          "type": "string",
                          "enum": [
                            "mercari",
                            "yahoo_auctions",
                            "rakuten",
                            "amazon_jp",
                            "surugaya",
                            "digimart",
                            "map_camera",
                            "kitamura",
                            "other"
                          ]
                        },
                        "item_url": {
                          "type": "string",
                          "description": "Not fetched. Echoed back only."
                        },
                        "lithium": {
                          "type": "string",
                          "enum": [
                            "installed",
                            "spare",
                            "none",
                            "unspecified"
                          ]
                        },
                        "alcohol_abv": {
                          "type": "number"
                        },
                        "mains_voltage": {
                          "type": "string",
                          "enum": [
                            "100",
                            "100-240",
                            "unknown",
                            "not_applicable"
                          ]
                        },
                        "length_cm": {
                          "type": "number",
                          "description": "Ignored. Volumetric weight is not calculated."
                        },
                        "width_cm": {
                          "type": "number"
                        },
                        "height_cm": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "One estimate per proxy. cheapest and fastest are null until the dataset can support them."
          }
        }
      }
    },
    "/v1/referral-link": {
      "post": {
        "operationId": "referralLink",
        "summary": "Outbound link for a proxy. Placeholder until an affiliate URL is configured. Suppressed for alcohol.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "proxy"
                ],
                "properties": {
                  "proxy": {
                    "type": "string"
                  },
                  "category": {
                    "type": "string",
                    "enum": [
                      "figures",
                      "trading_cards",
                      "retro_games",
                      "cameras",
                      "effects_pedals",
                      "sake",
                      "whisky"
                    ]
                  },
                  "item_url": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Link, disclosure, and placeholder flag."
          }
        }
      }
    },
    "/v1/weights": {
      "get": {
        "operationId": "weights",
        "responses": {
          "200": {
            "description": "Unsourced weight placeholders by category."
          }
        }
      }
    },
    "/v1/countries": {
      "get": {
        "operationId": "countries",
        "responses": {
          "200": {
            "description": "Destination countries and EMS zone assignment quality."
          }
        }
      }
    },
    "/v1/datasets": {
      "get": {
        "operationId": "datasets",
        "responses": {
          "200": {
            "description": "Open-data file index. License CC BY 4.0."
          }
        }
      }
    },
    "/v1/datasets/{name}": {
      "get": {
        "operationId": "datasetFile",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A JSON or CSV dataset file."
          },
          "404": {
            "description": "Unknown file."
          }
        }
      }
    }
  }
}
