Product data API (for developers)

A read-only public API that returns the specs of the 3D printers and 3D scanners listed on 3Techs as JSON. No sign-up or API key is needed.

Use it for comparison sites, research, internal tools and more, following the terms of use (crediting the source).

Endpoints

Base URL: https://www.3d-tech.org/api/v1. All endpoints are GET only.

PathReturns
/api/v1/printersList of 3D printers
/api/v1/printers/{id}A single 3D printer
/api/v1/scannersList of 3D scanners
/api/v1/scanners/{id}A single 3D scanner

List parameters

Results are always sorted by ID in ascending order. Parameters not listed here, or malformed values, return a 400 error.

NameDescriptionDefault
limitItems per page (1–100)20
offsetNumber of items to skip from the start (0 or more)0
methodFilter by method ID (printing method for printers, scanning method for scanners)None
companyFilter by maker IDNone
in_productionFilter by in production (true) or discontinued (false)None
curl "https://www.3d-tech.org/api/v1/printers?limit=10&method=1&in_production=true"

Responses

Lists return data (an array) and meta (the total count total, and next_offset and next for the next page, which are null on the last page). A single item returns one object in data.

  • Units are given as suffixes of the field names (_mm, _um (μm), _kg, _c (°C), _nm, _mm_s (mm/s), _fps).
  • Prices are returned separately as price_jpy (Japanese yen) and price_usd (US dollars). Neither is converted from the other at an exchange rate.
  • Fields without a recorded value are null (empty arrays for multi-value fields).
  • For scanners, scan_area_mm is a string such as “210 x 150”.
  • Some text is in Japanese: method.name_ja holds the Japanese name of the method, and error message values are written in Japanese. Use error.code to handle errors in your code. In the examples below, non-ASCII characters are shown as \uXXXX escapes, which decode to the same values.

Example of a 3D printer list (GET /api/v1/printers?limit=10):

{
  "data": [
    {
      "id": 1,
      "name": "Example Printer X1",
      "url": "https://www.3d-tech.org/search/1",
      "company": {
        "id": 3,
        "name": "Example Inc."
      },
      "method": {
        "id": 1,
        "name": "Fused Deposition Modeling",
        "name_ja": "\u71b1\u6eb6\u89e3\u7a4d\u5c64\u65b9\u5f0f",
        "abbreviation": "FDM"
      },
      "price_jpy": 49800,
      "price_usd": 299,
      "build_volume_mm": {
        "x": 220,
        "y": 220,
        "z": 250
      },
      "dimensions_mm": {
        "x": 400,
        "y": 410,
        "z": 470
      },
      "weight_kg": 7.5,
      "resolution_xy_um": null,
      "resolution_z_um": 100,
      "layer_pitch_mm": {
        "min": 0.05,
        "max": 0.35
      },
      "speed_mm_s": {
        "min": null,
        "max": 500
      },
      "nozzle_temp_c": 300,
      "bed_temp_c": 100,
      "chamber_temp_c": null,
      "nozzle_sizes_mm": [
        0.4,
        0.6
      ],
      "filament_sizes_mm": [
        1.75
      ],
      "wavelength_nm": null,
      "power_supply": "100-240V",
      "is_in_production": true,
      "released_on": "2025-03-01",
      "product_url": "https://example.com/x1",
      "japan": {
        "has_giteki": true,
        "has_japanese_support": true,
        "distributor_name": null,
        "distributor_url": null,
        "official_price_jpy": 49800,
        "warranty_months": 12
      }
    }
  ],
  "meta": {
    "total": 120,
    "limit": 10,
    "offset": 0,
    "next_offset": 10,
    "next": "https://www.3d-tech.org/api/v1/printers?limit=10&offset=10"
  },
  "attribution": {
    "text": "3Techs\uff08https://www.3d-tech.org\uff09",
    "url": "https://www.3d-tech.org/",
    "terms": "https://www.3d-tech.org/developers#terms"
  }
}

For 3D scanners, the API returns fields such as accuracy_mm, resolution_mm, point_distance_mm, scan_area_mm (min / max), working_distance_mm (min / max), scan_speed_fps, has_color, connection and weight_kg (id, name, url, company, method, prices and production status have the same shape as for printers).

Errors

Errors are returned in this form.

{
  "error": {
    "code": "invalid_parameter",
    "message": "limit \u306f 1\u301c100 \u3067\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"
  }
}
StatuscodeMeaning
400invalid_parameterA parameter or ID is malformed
404not_foundNo data exists for the ID
429rate_limitedThe rate limit was exceeded
500internal_errorA server-side error

Rate limits and caching

  • Each IP address can make up to 60 requests per 60 seconds. Beyond that, the API returns 429, and the Retry-After header tells you how many seconds to wait.
  • Responses include X-RateLimit-Limit (the limit), X-RateLimit-Remaining (requests left) and X-RateLimit-Reset (reset time in UNIX seconds).
  • Limits are counted per server instance, so they are a guide rather than a strict limit. Header values on responses served from the CDN cache may not reflect the current state.
  • Successful responses are cached for up to 5 minutes, so data updates may take that long to appear. If you need a lot of data, store it locally instead of fetching it repeatedly at short intervals.
  • To allow calls directly from browsers, responses include Access-Control-Allow-Origin: * (CORS).

Terms of use

By using this API or data obtained through it, you agree to the following conditions. These terms are an English translation of the Japanese terms.

Crediting the source

  • When you display or publish the data, credit the source as “3Techs (https://www.3d-tech.org)” where users can see it.
  • On websites and apps, link to 3Techs (https://www.3d-tech.org/, or the 3Techs page of the product) as the source.
  • When you publish processed or aggregated data, state that the original data comes from 3Techs.

Accuracy of the data

  • The data is compiled by 3Techs from sources such as information published by manufacturers, and its accuracy, completeness and timeliness are not guaranteed. Always check the manufacturer’s official information before making decisions such as purchases.
  • The API specification and service may change or stop without notice. Except in cases of intent or gross negligence on the part of 3Techs, 3Techs is not liable for any damage arising from the use of the API.

Prohibited uses

  • Publishing or redistributing the data without crediting the source
  • Presenting the data as if it were not from 3Techs, or as if 3Techs recommends a particular product
  • Selling the data as is, or nearly as is
  • Making large numbers of requests from multiple IP addresses or similar to get around the rate limit
  • Uses that interfere with the operation of the service, or that violate laws or public order and morals

If you find an error or want to discuss usage beyond the limits, contact us on X (@threejp).