ICONYZ
日本語

無料の SVG アイコン API:URL でアイコンを読み込み・検索する

更新日 · 5 分で読めます

Iconyz のアイコンにはすべて固定の公開 URL があるので、何もダウンロードせずに HTML、CSS、Markdown、デザインツールで使えます。小さな JSON API も用意しており、自分のコードからアイコンセットの一覧を取得したり、アイコンを検索したりできます。API キーは不要です。

アイコンを SVG で取得する

GET https://iconyz.com/api/public/svg/{prefix}/{name}.svg

{prefix} はアイコンセットの ID、{name} はアイコンの名前です。どちらも各アイコンのページに、lucide:house や mdi:github のように表示されています。レスポンスは Content-Type: image/svg+xml の SVG ファイルそのものです。

<img src="https://iconyz.com/api/public/svg/mdi/github.svg" width="32" height="32" alt="GitHub">

![設定](https://iconyz.com/api/public/svg/tabler/settings.svg)

色を変える

単色アイコンは黒または currentColor で描かれていますが、画像は currentColor を継承できません。色を変えるには color パラメーターを付けます。

https://iconyz.com/api/public/svg/lucide/heart.svg?color=%23e11d48

値は 16 進数のカラーコード(#rgb、#rrggbb、#rrggbbaa)で、# は %23 に URL エンコードします。white、black、currentColor も指定できます。絵文字、国旗、ロゴなどのマルチカラーアイコンは元の色を保ち、このパラメーターを無視します。

アイコンセットの一覧

GET https://iconyz.com/api/public/sets?limit=20&sort=icons
パラメーター説明
qセット名と、名前が一致するアイコンを含むセットを検索
categoryカテゴリで絞り込み(例: Logos、UI 24px)
sorticons(アイコン数の多い順)、alpha、recent
limit、skipページング: 1 回のリクエストで最大 500 件、既定は 12 件
{
  "items": [
    {
      "prefix": "fluent",
      "name": "Fluent UI System Icons",
      "total": 19850,
      "category": "UI 24px",
      "license": "MIT",
      "palette": false,
      "sampleIcons": ["…"]
    }
  ],
  "total": 238, "limit": 20, "skip": 0
}

作者やライセンスの詳細を含む、1 つのセットの情報を取得するには:

GET https://iconyz.com/api/public/sets/{prefix}

セット内のアイコンの一覧と検索

GET https://iconyz.com/api/public/sets/lucide/icons?q=arrow&page=1&limit=100

q はアイコン名で絞り込み、page は 1 から始まり、limit は最大 200 です。各項目には、そのまま使える svgUrl が含まれています。

{
  "items": [
    { "id": "lucide:arrow-left", "prefix": "lucide", "name": "arrow-left",
      "svgUrl": "/api/public/svg/lucide/arrow-left.svg", "width": 24, "height": 24 }
  ],
  "total": 94, "page": 1, "limit": 100, "hasMore": false
}

例: 小さなアイコンピッカー

API は CORS ヘッダーを返すので、ブラウザから直接呼び出せます。

<input id="q" placeholder="Lucide のアイコンを検索…">
<div id="results"></div>
<script>
  const base = "https://iconyz.com";
  const results = document.getElementById("results");
  document.getElementById("q").addEventListener("input", async (e) => {
    const q = encodeURIComponent(e.target.value.trim());
    const res = await fetch(`${base}/api/public/sets/lucide/icons?q=${q}&limit=48`);
    const { items } = await res.json();
    results.innerHTML = items
      .map((i) => `<img src="${base}${i.svgUrl}" width="24" height="24" alt="${i.name}" title="${i.name}">`)
      .join("");
  });
</script>

キャッシュと節度ある利用

  • SVG のレスポンスはブラウザに 1 日、CDN に 1 週間キャッシュされるので、同じリクエストは高速に返ります。
  • 本番のアプリでは、何百もの URL を直接参照するのではなく、使うアイコンをバンドルしてください(アイコンパネルから SVG やコンポーネントのコードをコピーします)。実行時に外部へ依存しなくなり、ページの表示も速くなります。
  • API 経由で配信されるアイコンにも、元のライセンスがそのまま適用されます。各セットのライセンスを確認し、必要な場合は作者のクレジットを表記してください。アイコンのライセンス解説もご覧ください。

試しに使うアイコンをお探しなら、すべてのセットを検索するか、Tabler Icons や Material Design Icons から始めてみてください。