Lucide APIlucide.dev ↗
Access the full Lucide icon library via API. Retrieve SVG markup, tags, categories, and contributor metadata for every icon by name or keyword search.
What is the Lucide API?
The Lucide API exposes 7 endpoints covering the complete Lucide icon library — browse all icon names, fetch raw SVG markup, search by keyword or tag, and filter by category. The get_icon_svg endpoint returns ready-to-embed SVG markup for any icon by its kebab-case name, while get_icon_metadata surfaces tags, categories, and contributors for each icon. Together they cover every icon available on lucide.dev.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/f1d1a6d0-a089-440e-82b5-cbfc0f2e8442/get_all_icon_names' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace lucide-dev-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Lucide Icons SDK — browse, search, and retrieve icon SVGs and metadata."""
from parse_apis.lucide_icons_api import Lucide, IconNotFound
client = Lucide()
# List all categories and inspect the first few
for category in client.categories.list(limit=5):
print(category.name, category.slug, category.count)
# Get icons in a specific category by drilling into a category instance
cat = client.categories.list(limit=1).first()
if cat:
for icon in cat.icons(limit=3):
print(icon.name)
# Search icons by keyword
for icon in client.icons.search(query="arrow", limit=5):
print(icon.name)
# Fetch full SVG for a specific icon via constructible key lookup
icon = client.icon(name="heart")
detail = icon.metadata()
print(detail.name, detail.tags, detail.categories)
# Batch retrieval with SVGs
for icon in client.icons.batch_with_svgs(limit=3):
print(icon.name, icon.svg[:60])
# Typed error handling
try:
bad = client.icon(name="nonexistent-icon-xyz").metadata()
except IconNotFound as exc:
print(f"Icon not found: {exc.icon_name}")
print("exercised: categories.list / category.icons / icons.search / icon.metadata / icons.batch_with_svgs")
Retrieves the complete sorted list of all Lucide icon names in kebab-case. The list is derived from the project's icon registry and includes every published icon. No pagination — returns the full set in one response.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of kebab-case icon name strings"
},
"sample": {
"data": {
"items": [
"a-arrow-down",
"a-arrow-up",
"a-large-small",
"activity",
"air-vent"
]
},
"status": "success"
}
}About the Lucide API
Icon Retrieval and SVG Access
The get_icon_svg endpoint accepts an icon_name parameter (kebab-case, e.g. arrow-down, heart) and returns an object with the icon's name and its full svg raw markup. If you need SVG content in bulk, get_all_icons_with_svgs accepts an optional limit integer to batch the response — omitting limit returns every icon at once, which may add latency for large requests. Use get_all_icon_names first to enumerate valid names before fetching individual icons.
Metadata, Tags, and Categories
get_icon_metadata returns a metadata object for each icon containing tags, categories, and contributors arrays. Tags are the primary mechanism for keyword-based discovery — they power the search_icons endpoint, which matches a query string against both icon names and tags and returns a sorted array of matching kebab-case names. list_categories returns every available category with its display name, slug identifier, and icon count. Pass a category_slug from that response into get_icons_by_category to retrieve a sorted list of icon names belonging to that group.
Combining Endpoints
A typical discovery workflow chains three calls: list_categories to find a relevant slug, get_icons_by_category to get icon names in that group, and then get_icon_svg or get_icon_metadata for each name. The search_icons endpoint shortcircuits this when you already have a keyword — it searches across both names and tags simultaneously, returning a flat sorted array of matches.
The Lucide API is a managed, monitored endpoint for lucide.dev — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when lucide.dev changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official lucide.dev API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Building an icon picker UI that displays SVG previews fetched via
get_icon_svgfor each selected name. - Generating a static icon sprite sheet by batching all SVG markup from
get_all_icons_with_svgswith a controlledlimit. - Populating a design-tool plugin with category-filtered icon sets using
get_icons_by_category. - Implementing live icon search in a component library by wiring user input to
search_icons. - Auditing icon contributor history by iterating
get_icon_metadataand extracting thecontributorsarray for each icon. - Seeding a documentation site with icon tags and categories pulled from
get_icon_metadatafor each entry inget_all_icon_names. - Building a category browser that shows icon counts per group using the
countfield fromlist_categories.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Lucide have an official developer API?+
What does `get_icon_metadata` return, and how is it different from `get_icon_svg`?+
get_icon_metadata returns a metadata object containing tags (keyword strings), categories (category slugs the icon belongs to), and contributors (array of contributor identifiers). It does not return SVG markup. get_icon_svg returns only the raw SVG string under the svg field. To get both, call each endpoint separately for the same icon_name.Does `search_icons` support filtering by category at the same time?+
search_icons matches a single query string against icon names and tags and returns a flat sorted array — there is no category filter parameter. get_icons_by_category handles category-scoped listing separately. You can fork this API on Parse and revise it to add a combined search-plus-category endpoint.Does the API return icon size variants or stroke-width options?+
get_icon_svg returns a single SVG string per icon name without size or stroke-width variants. The raw SVG markup can be modified client-side by adjusting standard SVG attributes. You can fork this API on Parse and revise it to add a parameterized endpoint that injects custom stroke or size values before returning the markup.Are there any pagination controls when fetching all icons at once?+
get_all_icons_with_svgs accepts a limit integer to cap how many icons are returned in one response. get_all_icon_names returns the complete name list in a single array with no pagination parameters. There is no offset or cursor parameter on any endpoint. For large batches, use limit on get_all_icons_with_svgs and iterate using the known icon names from get_all_icon_names.