u/GiraffeLarge9085

The easiest and most type-safe way to interact with the FACEIT API

The easiest and most type-safe way to interact with the FACEIT API

Hello everyone,

If you've attempted to create a Discord bot or statistics tracker for FACEIT (CS2 and so forth), you know how tedious the process of interacting with raw API calls, custom headers, and pagination can be.

I was tired of duplicating the same code, so I created faceit-python. It's a straightforward, lightweight wrapper which makes using the FACEIT Data API feel intuitively "Pythonic".

Features:

  • High-level, idiomatic API — Interact with FACEIT as if it were a native Python service.
  • Full type safety — Compatible with mypy and other type checkers.
  • Sync & async support — Powered by httpx.
  • Pydantic models — All data models inherit from pydantic.BaseModel.
  • Advanced pagination — Supports both cursor-based and Unix timestamp pagination.
  • Flexible data access — Choose between raw data and parsed models (e.g., .raw_players vs .players).
  • Page collection utilities — Paginated responses in model mode are wrapped in an ItemPage collection with convenient methods, such as .map(), .filter(), .find(), and more.

GitHub: https://github.com/zombyacoff/faceit-python

The project is in its early stages of development, so contributions and pull requests are most welcome. If it saves you any time, please leave a ⭐️!

u/GiraffeLarge9085 — 12 hours ago

Built a Faceit API wrapper because the existing ones were clunky. Am I on the right track?

Hello. I have been practising Python programming for two to three years already. If we exclude the period when all my code was written using endless if-else statements, it would be more accurate to say I spent about a year and a half exploring this sandbox.

Within this period, I developed a library/wrapper for the Faceit API myself. Honestly, I was very dissatisfied with all the counterparts. They were just extremely inconvenient to use. And I had to develop a bot that would mock my friends and send them their awful stats in the matches xd

What am I doing this for? Firstly, as an insecure 18-year-old, I have to ask myself whether I am going in the right direction and what the current level of my progress is. Like, can I possibly find employment after such portfolio? Besides, I'd be lying if I said I didn't want to gain some recognition for my work and get some attention. Someone could actually use it here.

GitHub: https://github.com/zombyacoff/faceit-python

u/GiraffeLarge9085 — 5 days ago