{"id":19916722,"url":"https://github.com/thieman/ggtracker-python","last_synced_at":"2026-06-12T05:31:41.309Z","repository":{"id":8203328,"uuid":"9635972","full_name":"thieman/ggtracker-python","owner":"thieman","description":"API Client for ggtracker.com","archived":false,"fork":false,"pushed_at":"2013-05-21T23:46:37.000Z","size":132,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-06T05:49:57.697Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thieman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-24T00:04:20.000Z","updated_at":"2016-08-03T08:16:17.000Z","dependencies_parsed_at":"2022-08-06T22:00:12.084Z","dependency_job_id":null,"html_url":"https://github.com/thieman/ggtracker-python","commit_stats":null,"previous_names":["tthieman/ggtracker-python"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thieman/ggtracker-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieman%2Fggtracker-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieman%2Fggtracker-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieman%2Fggtracker-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieman%2Fggtracker-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thieman","download_url":"https://codeload.github.com/thieman/ggtracker-python/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieman%2Fggtracker-python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34231214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-12T21:47:22.273Z","updated_at":"2026-06-12T05:31:41.293Z","avatar_url":"https://github.com/thieman.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"ggtracker-python\n================\n\nA simple API client for [GGTracker.](http://ggtracker.com)\n\n## Installation\n\nTagged versions are available on PyPi (though the 0.1 release is not tagged; my bad).\n\n    pip install ggtracker-client\n\nOtherwise, clone this repo for the latest and greatest.\n\n## Usage\n\nFirst, get yourself a client.\n\n    from ggtracker import GGTrackerAPI\n    gg = GGTrackerAPI('api.ggtracker.com')\n\nYou can construct queries by supplying an endpoint and chaining together the following modifiers. Explanations of the less-obvious methods can be found in their docstrings.\n\n  * limit(int)\n  * offset(int)\n  * paginate()\n  * summary()\n  * sc2ranks()\n  * game_type(str in ['1v1', '2v2', '3v3', '4v4', 'FFA'])\n  * order(field_name, ascending=True)\n  * match(user='Zoulas', gateway='us')\n  * filter(graphs=None, match=['replays', 'map'])\n\nOnce you construct the query, you can then iterate over it, where each element is a member of the 'collection' list in the resulting JSON.\n\n    query = gg.query('identities').limit(20).match(gateway='us').paginate()\n    for record in query:\n        do_stuff(record)\n\n## Implementation Details\n\n#### Rate Limit\n\nThe client supports a courtesy rate limit, defaulted to 60 requests per minute. If you exceed the rate limit, the client will block upon **creation** of a new query until enough time has passed. Rate limits can be altered by passing the number of permissible requests per minute to the constructor, or 0 to disable.\n\n    gg = GGTrackerAPI('api.ggtracker.com', rate_limit=0)\n\n#### Default Filters\n\nIf you do not explicitly set any filters, some API endpoints will assign default filters to your query in order to reduce load on GGTracker's API. This is intended behavior. If you would like to force no filters on your query, do the following:\n\n    gg.query('matches').filter(clear=True)\n\n## TODO\n\n  * stats filters on the query are entirely unsupported right now\n  * implement additional helper functions for common data manipulations\n  * put some validation to catch invalid filters being applied\n\n## Author\n\n * [Travis Thieman](https://twitter.com/thieman)\n\n## Credits\n\n * [David Joerg](https://twitter.com/dsjoerg) for creating GGTracker and for helping me grok the API\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthieman%2Fggtracker-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthieman%2Fggtracker-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthieman%2Fggtracker-python/lists"}