Discover/Eindev API
live

Eindev APIui.eindev.ir

Search and retrieve liquid glass UI components from the EinUI registry. Get metadata, npm dependencies, and full source code via 2 endpoints.

This API takes change requests — .
Endpoints
2
Updated
3d ago

What is the Eindev API?

The EinUI Registry API exposes 2 endpoints for discovering and fetching liquid glass UI components from the EinUI component registry. Use search_components to filter components by text query or category, returning fields like name, title, description, dependencies, and file paths. Use get_component to pull the complete source code, type, and dependency list for any specific component by name.

This call costs1 credit / call— charged only on success
Try it
Search text to filter components. Matched case-insensitively against component name, title, and description. Omitting returns all components.
Category filter matched against component name (e.g. 'glass', 'widget', 'block'). Omitting returns all categories.
api.parse.bot/scraper/768785e1-c914-4526-8800-26d8721f92dc/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/768785e1-c914-4526-8800-26d8721f92dc/search_components' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 ui-eindev-ir-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.

"""
EinUI Liquid Glass Components API Client

Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional, Any


class ParseClient:
    """Client for interacting with the EinUI Liquid Glass Components API."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse API client.

        Args:
            api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "768785e1-c914-4526-8800-26d8721f92dc"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError("API key not provided and PARSE_API_KEY environment variable not set")

    def _call(self, endpoint: str, method: str = "POST", **params) -> dict[str, Any]:
        """
        Internal method to call the Parse API.

        Args:
            endpoint: API endpoint name
            method: HTTP method (GET or POST)
            **params: Query or body parameters

        Returns:
            JSON response from the API

        Raises:
            requests.RequestException: If the API request fails
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {"X-API-Key": self.api_key, "Content-Type": "application/json"}

        if method.upper() == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method.upper() == "POST":
            response = requests.post(url, headers=headers, json=params)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")

        response.raise_for_status()
        return response.json()

    def search_components(
        self, query: Optional[str] = None, category: Optional[str] = None
    ) -> dict[str, Any]:
        """
        Search and list liquid glass components from the EinUI registry.

        Args:
            query: Optional search text to filter components by name, title, or description
            category: Optional category filter to match against component name

        Returns:
            Dictionary containing total count and list of component objects
        """
        params = {}
        if query:
            params["query"] = query
        if category:
            params["category"] = category

        return self._call("search_components", method="GET", **params)

    def get_component(self, name: str) -> dict[str, Any]:
        """
        Get full details of a specific component including source code and metadata.

        Args:
            name: Component name from the registry (e.g., 'glass-card', 'glass-button')

        Returns:
            Dictionary containing component details, dependencies, and full source code
        """
        return self._call("get_component", method="GET", name=name)


def main():
    """Practical workflow example: Search for glass components and retrieve their full source code."""

    # Initialize the client
    client = ParseClient()

    print("=" * 70)
    print("EinUI Liquid Glass Components - Practical Usage Example")
    print("=" * 70)

    # Step 1: Search for all glass components
    print("\n[Step 1] Searching for glass components...")
    search_results = client.search_components(category="glass")

    total = search_results.get("total", 0)
    components = search_results.get("components", [])

    print(f"Found {total} glass components:")
    print("-" * 70)

    for idx, component in enumerate(components[:5], 1):  # Show first 5
        print(f"{idx}. {component['title']} (name: {component['name']})")
        print(f"   Description: {component['description']}")
        print(f"   Dependencies: {', '.join(component['dependencies']) if component['dependencies'] else 'None'}")
        print()

    # Step 2: If components found, get detailed source code for the first component
    if components:
        first_component = components[0]
        component_name = first_component["name"]

        print("\n[Step 2] Retrieving full details and source code...")
        print(f"Getting detailed information for '{component_name}'...")
        print("-" * 70)

        try:
            component_details = client.get_component(component_name)

            print(f"\nComponent: {component_details['title']}")
            print(f"Type: {component_details['type']}")
            print(f"Description: {component_details['description']}")

            if component_details.get("dependencies"):
                print(f"Dependencies: {', '.join(component_details['dependencies'])}")

            # Display source code information
            print(f"\nSource Files:")
            for file_obj in component_details.get("files", []):
                path = file_obj.get("path", "unknown")
                content_length = len(file_obj.get("content", ""))
                print(f"  - {path}")
                print(f"    Size: {content_length} characters")
                # Show first 200 chars of content as preview
                if content_length > 0:
                    preview = file_obj.get("content", "")[:200]
                    print(f"    Preview: {preview}...")

        except requests.RequestException as e:
            print(f"Error retrieving component details: {e}")

    # Step 3: Search by query to find components with specific functionality
    print("\n[Step 3] Searching for components with 'select' functionality...")
    print("-" * 70)

    select_results = client.search_components(query="select")
    select_components = select_results.get("components", [])

    if select_components:
        for component in select_components[:3]:
            print(f"- {component['title']} ({component['name']})")
            print(f"  {component['description']}\n")
    else:
        print("No components found with 'select' in their metadata.")

    print("\n" + "=" * 70)
    print("Workflow completed successfully!")
    print("=" * 70)


if __name__ == "__main__":
    main()
All endpoints · 2 totalmissing one? ·

Search and list liquid glass components from the EinUI registry. Returns component metadata including name, title, description, dependencies, and file paths. Supports filtering by text query (matched against name, title, and description) and by category (matched against component name).

Input
ParamTypeDescription
querystringSearch text to filter components. Matched case-insensitively against component name, title, and description. Omitting returns all components.
categorystringCategory filter matched against component name (e.g. 'glass', 'widget', 'block'). Omitting returns all categories.
Response
{
  "type": "object",
  "fields": {
    "total": "integer",
    "components": "array of component objects with name, title, type, description, dependencies, and files"
  },
  "sample": {
    "total": 17,
    "components": [
      {
        "name": "glass-select",
        "type": "registry:component",
        "files": [
          "registry/liquid-glass/glass-select.tsx"
        ],
        "title": "Glass Select",
        "description": "A liquid glass styled select dropdown with frosted glass styling.",
        "dependencies": [
          "@radix-ui/react-select",
          "lucide-react"
        ]
      }
    ]
  }
}

About the Eindev API

Searching the EinUI Registry

The search_components endpoint returns an array of component objects along with a total count. Each object includes name, title, type, description, dependencies (npm packages the component requires), and files (paths to the component's source files). The query parameter filters results case-insensitively against name, title, and description. The category parameter narrows results by matching against name, which works for category prefixes like glass, widget, or block. Omitting both parameters returns the full registry.

Fetching Full Component Details

The get_component endpoint accepts a name string — discoverable from search_components results — and returns the complete component record. The files array in the response includes objects with path, type, and content, where content is the full source code of each file. The dependencies array lists the npm package names required to use the component. Fields title and description provide human-readable context alongside the raw code.

Practical Notes

Component names follow a consistent hyphenated pattern (e.g. glass-card, glass-button, glass-avatar), making it straightforward to construct get_component calls directly once you know naming conventions. The files array can contain multiple file objects per component, covering cases where a component is split across more than one source file.

Reliability & maintenance

The Eindev API is a managed, monitored endpoint for ui.eindev.ir — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ui.eindev.ir 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 ui.eindev.ir 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?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Auto-generating a component picker UI by listing all EinUI registry entries with their titles and descriptions.
  • Pulling the full source code and npm dependencies for a glass-card component to embed in a design system scaffold.
  • Filtering registry components by category (e.g. widget) to build a curated showcase of widget-type elements.
  • Extracting the dependencies field across all components to produce a consolidated npm install command.
  • Building a documentation site that renders component metadata and live code previews from registry data.
  • Syncing a local component library with the EinUI registry by diffing fetched component files against local versions.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does EinUI have an official developer API for its component registry?+
EinUI does not publish a documented public developer API. The registry data is available at ui.eindev.ir, and this Parse API provides structured programmatic access to it.
What does `get_component` return beyond what `search_components` already includes?+
search_components returns metadata fields — name, title, type, description, dependencies, and file paths. get_component adds the actual source code: each file object in the files array includes a content field with the full component source, which is not present in search results.
Does the API expose version history or changelogs for components?+
Not currently. The API covers current component metadata, source code, and dependencies as they exist in the registry snapshot. You can fork it on Parse and revise to add an endpoint that tracks version or changelog data if the registry exposes that information.
Can I filter components by their npm dependency list?+
Not currently. Filtering is supported by text query and by category (matched against component name). The dependencies field is returned per component but cannot be used as a filter parameter. You can fork it on Parse and revise to add dependency-based filtering as an endpoint parameter.
How should I discover valid component names before calling `get_component`?+
Call search_components with no parameters to retrieve the full registry. Each object in the components array includes a name field (e.g. glass-button, glass-avatar) that can be passed directly to get_component as the required name input.
Page content last updated . Spec covers 2 endpoints from ui.eindev.ir.
Related APIs in Developer ToolsSee all →
crt.sh API
Search for SSL/TLS certificates across public transparency logs by domain, fingerprint, serial number, or public key, and retrieve detailed certificate information including issuer, validity dates, and certificate chain details. Monitor certificate issuance for domains you care about to track security changes and detect unauthorized certificates.
artificialanalysis.ai API
Compare and rank LLM models and providers across performance benchmarks, then dive into detailed specifications for any model to find the best fit for your needs. Discover performance metrics for specialized AI systems handling speech, images, and video, plus benchmark data for different hardware configurations.
python.org API
Access comprehensive Python release information including downloads, versions, and supported operating systems, plus stay updated with the latest Python news and events. Search across Python.org's resources and browse release files, details, and the FTP index all in one place.
nvidia.com API
nvidia.com API
alienvault.com API
Search and analyze global threat intelligence data including indicators of compromise, threat pulses, and adversary profiles from the Open Threat Exchange community. Monitor recent security alerts and access detailed information about threats and adversaries to strengthen your cybersecurity defenses.
lucide.dev API
Browse and download thousands of Lucide icons with instant search and category filtering to find exactly what you need. Get SVG files and metadata for each icon to integrate them seamlessly into your projects.
trends.google.com API
Discover what's trending right now in any country by accessing the top search topics with real-time search volume, growth rates, and related queries. Stay informed on trending categories and see which searches are gaining the most momentum in your target markets.
soliditylang.org API
Access comprehensive Solidity documentation, search language references, and browse blog posts to stay updated on development news. Query compiler bug data filtered by version to identify known issues and compatibility concerns across smart contract projects.