{"id":43589352,"url":"https://github.com/xivapi/xivapi-py","last_synced_at":"2026-02-04T01:49:13.315Z","repository":{"id":55119598,"uuid":"179135289","full_name":"xivapi/xivapi-py","owner":"xivapi","description":"An asynchronous Python client for XIVAPI","archived":false,"fork":false,"pushed_at":"2022-12-14T18:04:51.000Z","size":86,"stargazers_count":63,"open_issues_count":4,"forks_count":16,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-29T09:03:40.838Z","etag":null,"topics":["async","ffxiv","python","xivapi"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pyxivapi/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xivapi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-02T18:23:56.000Z","updated_at":"2025-08-28T10:43:10.000Z","dependencies_parsed_at":"2022-08-14T12:31:27.889Z","dependency_job_id":null,"html_url":"https://github.com/xivapi/xivapi-py","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/xivapi/xivapi-py","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xivapi%2Fxivapi-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xivapi%2Fxivapi-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xivapi%2Fxivapi-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xivapi%2Fxivapi-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xivapi","download_url":"https://codeload.github.com/xivapi/xivapi-py/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xivapi%2Fxivapi-py/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29064007,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T00:26:14.114Z","status":"ssl_error","status_checked_at":"2026-02-04T00:23:06.435Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","ffxiv","python","xivapi"],"created_at":"2026-02-04T01:49:11.456Z","updated_at":"2026-02-04T01:49:13.307Z","avatar_url":"https://github.com/xivapi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyxivapi\nAn asynchronous Python client for XIVAPI\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/741f410aefad4fa69cc6925ff5d83b4b)](https://www.codacy.com/manual/Yandawl/xivapi-py?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=xivapi/xivapi-py\u0026amp;utm_campaign=Badge_Grade)\n[![PyPI version](https://badge.fury.io/py/pyxivapi.svg)](https://badge.fury.io/py/pyxivapi)\n[![Python 3.6](https://img.shields.io/badge/python-3.6-green.svg)](https://www.python.org/downloads/release/python-360/)\n\n## Requirements\n```python\npython\u003e=3.6.0\nasyncio\naiohttp\n```\n\n## Installation\n```python\npip install pyxivapi\n```\n\n## Supported API end points\n\n*   /character/search\n*   /character/id\n*   /freecompany/search\n*   /freecompany/id\n*   /linkshell/search\n*   /linkshell/id\n*   /pvpteam/search\n*   /pvpteam/id\n*   /index/search (e.g. recipe, item, action, pvpaction, mount, e.t.c.)\n*   /index/id\n*   /lore/search\n*   /lodestone/worldstatus\n\n## Documentation\n\u003chttps://xivapi.com/docs/\u003e\n\n## Example\n```python\nimport asyncio\nimport logging\n\nimport aiohttp\nimport pyxivapi\nfrom pyxivapi.models import Filter, Sort\n\n\nasync def fetch_example_results():\n    client = pyxivapi.XIVAPIClient(api_key=\"your_key_here\")\n\n    # Search Lodestone for a character\n    character = await client.character_search(\n        world=\"odin\", \n        forename=\"lethys\", \n        surname=\"lightpaw\"\n    )\n\n    # Get a character by Lodestone ID with extended data \u0026 include their Free Company information, if it has been synced.\n    character = await client.character_by_id(\n        lodestone_id=8255311, \n        extended=True,\n        include_freecompany=True\n    )\n\n    # Search Lodestone for a free company\n    freecompany = await client.freecompany_search(\n        world=\"gilgamesh\", \n        name=\"Elysium\"\n    )\n\n    # Item search with paging\n    item = await client.index_search(\n        name=\"Eden\",\n        indexes=[\"Item\"],\n        columns=[\"ID\", \"Name\"],\n        filters=[\n            Filter(\"LevelItem\", \"gt\", 520)\n        ],\n        sort=Sort(\"LevelItem\", False),\n        page=0,\n        per_page=10\n    )\n\n    # Fuzzy search XIVAPI game data for a recipe by name. Results will be in English.\n    recipe = await client.index_search(\n        name=\"Crimson Cider\", \n        indexes=[\"Recipe\"], \n        columns=[\"ID\", \"Name\", \"Icon\", \"ItemResult.Description\"]\n    )\n\n    # Fuzzy search XIVAPI game data for a recipe by name. Results will be in French.\n    recipe = await client.index_search(\n        name=\"Cidre carmin\", \n        indexes=[\"Recipe\"], \n        columns=[\"ID\", \"Name\", \"Icon\", \"ItemResult.Description\"], \n        language=\"fr\"\n    )\n\n    # Get an item by its ID (Omega Rod) and return the data in German\n    item = await client.index_by_id(\n        index=\"Item\", \n        content_id=23575, \n        columns=[\"ID\", \"Name\", \"Icon\", \"ItemUICategory.Name\"], \n        language=\"de\"\n    )\n\n    filters = [\n        Filter(\"ClassJobLevel\", \"gte\", 0)\n    ]\n\n    # Get non-npc actions matching a given term (Defiance)\n    action = await client.index_search(\n        name=\"Defiance\", \n        indexes=[\"Action\", \"PvPAction\", \"CraftAction\"], \n        columns=[\"ID\", \"Name\", \"Icon\", \"Description\", \"ClassJobCategory.Name\", \"ClassJobLevel\", \"ActionCategory.Name\"], \n        filters=filters,\n        string_algo=\"match\"\n    )\n\n    # Search ingame data for matches against a given query. Includes item, minion, mount \u0026 achievement descriptions, quest dialog \u0026 more.\n    lore = await client.lore_search(\n        query=\"Shiva\",\n        language=\"fr\"\n    )\n\n    # Search for an item using specific filters\n    filters = [\n        Filter(\"LevelItem\", \"gte\", 100)\n    ]\n\n    sort = Sort(\"LevelItem\", True)\n\n    item = await client.index_search(\n        name=\"Omega Rod\", \n        indexes=[\"Item\"], \n        columns=[\"ID\", \"Name\", \"Icon\", \"Description\", \"LevelItem\"],\n        filters=filters,\n        sort=sort,\n        language=\"de\"\n    )\n\n    await client.session.close()\n\n\nif __name__ == '__main__':\n    logging.basicConfig(level=logging.INFO, format='%(message)s', datefmt='%H:%M')\n    loop = asyncio.get_event_loop()\n    loop.run_until_complete(fetch_example_results())\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxivapi%2Fxivapi-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxivapi%2Fxivapi-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxivapi%2Fxivapi-py/lists"}