Service eligibility and regional restrictions
PuppyIP serves only compliant overseas businesses and their authorized personnel. Proxy services are not available in mainland China. The service may only be used for lawful business activities outside mainland China. Use of this service within mainland China is prohibited.
Hosting a proxy IP or server overseas does not change these restrictions. The service must not be provided to end users in mainland China through relaying, forwarding, sharing or resale. Before use, read the Terms of Service.
Key Takeaways
- The old /repos/{owner}/{repo}/stargazers list is restricted to administrators and collaborators for privacy. Do not bypass this through account changes, expanded permissions or UI scraping.
- The new endpoint is GET /repos/{owner}/{repo}/stargazers/history. Public repositories allow unauthenticated access; fine-grained tokens need only Metadata read.
- Results are calendar weeks newest first, with days starting Sunday. Weeks without new stars return zeros, but week and day boundaries are not guaranteed to align with UTC.
- per_page allows at most 30 weeks and page at most 100. Save API version, pagination position, retrieval time and boundary samples rather than reading only page one.
- Aggregate history provides neither identities nor precise individual star records. Unstarring can legitimately make current counts differ from historical additions.
- For 401/403 check authentication and endpoint rules; for 404 check the repository; for 422 check parameters or abuse protection. Investigate networks only for DNS, TLS, 407 or timeouts.
A privacy-safe replacement, not a renamed old list
GitHub's changelog says the stargazer-list endpoint was restricted earlier this year to administrators and collaborators to reduce spam using personal data. The new Star History endpoint lets tools analyze repository growth through aggregate history without exposing stargazer identities.
If a system relies on login, user profiles or personal timestamps in application/vnd.github.star+json, the new endpoint cannot replace those fields directly. Reframe goals as trends, release impact and repository growth. Scraping interfaces, rotating accounts or expanding permissions to reconstruct identities violates the privacy boundary of this change.
Inventory dependencies behind 403s, empty results and gaps
Search code, schedules, BI queries and third-party integrations for /stargazers, application/vnd.github.star+json, starred_at, user login and page scraping. Record each consumer's repository, purpose, permissions, stored fields, refresh rate, last success and error response, separating trend analysis from identity requirements.
GitHub's earlier restriction notice explicitly mentions empty responses or 403 from the old list and related interfaces. Do not mistake access changes for proxy faults or copy cached personal data directly into new tables. Stop collecting identity fields without a lawful, necessary purpose and handle existing data under organizational retention rules.
Minimal request: endpoint, API version and permissions
Official documentation specifies GET /repos/{owner}/{repo}/stargazers/history, recommends Accept: application/vnd.github+json and pins X-GitHub-Api-Version: 2026-03-10. Start unauthenticated on a public test repository, then use a fine-grained token on a private test repository, recording HTTP status, request ID, response schema and time.
Fine-grained GitHub App or personal access tokens require only Metadata repository permissions read; public resources can be requested without authentication. Do not grant Contents write or administrator access merely to eliminate 403. For private failures, check token type, repository scope and Metadata read before organization policies.
Pagination and time boundaries: 30 weeks per page is not all history
Results are calendar weeks from newest to oldest, and pagination continues toward the repository's creation week. Within each page the order is also descending, so sequential page concatenation creates a continuous series. per_page tops out at 30 and page at 100. Save page, per_page, API version and the final week identifier, with stop conditions for the last page and creation week.
Each week includes total and seven days counts starting Sunday; weeks with no new stars return zeros. GitHub explicitly says week and day boundaries need not align with UTC. Do not redivide week timestamps into UTC weeks and then compare individual days against the original array. Retain raw values before creating derived views in a business display time zone.
Reconcile unstarring and personal timestamps separately
For the same test repository, save the last legitimate aggregate snapshot from the old system, all pages from the new API and the current stargazer count. Compare weekly trends, release-adjacent changes and gaps without assuming summed historical days equal the current count. Unstarred users are absent from today's count, while the history describes stars created each day.
Explicitly reduce old features requiring precise personal attribution to weekly/daily aggregates, interval changes or current totals. Do not infer identities to fill gaps. If API/dashboard differences exceed a defined threshold, keep the old report read-only with a cutoff time, stop publishing automated growth conclusions and manually review time zones, pagination, unstarring and repository transfers.
Separate permission, parameter and network failures
For 401/403, check accidental calls to the old list, token validity, repository authorization and effective Metadata read. For 404, verify owner, repo and visibility. For 422, check per_page, page and frequency for validation or abuse-detection failures. Broader token permissions, changing Base URL and infinite retries can obscure the cause.
Investigate network paths only for DNS failures, TLS handshake errors, proxy 407, TCP timeouts or simultaneous connection-layer failures on other GitHub REST endpoints. Use the GitHub Copilot enterprise proxy and CA guide for certificate and exit checks. Fixed exits cannot restore privacy-restricted personal lists or change API permissions.
Staging, rollback and completion
First fetch every page on one public test repository and verify week boundaries, then confirm minimum permissions on one private repository. Run old and new aggregate reports in parallel for one complete refresh cycle. Expand to more repositories and dashboards only with complete pagination, explained trend differences, removed identity fields, and stable errors and rate limits.
Stop switching for persistent 401/403 or 422, duplicate or missing pages, UTC redivision that misaligns days, unexplained reconciliation differences or downstream demands for identities. Preserve raw responses, API version, redacted logs and old aggregate snapshots, then return to read-only reports and human review. For reproducible connection-layer failures, visit the PuppyIP website for fixed-exit information, never to bypass GitHub privacy restrictions.
Sources
Frequently Asked Questions
What is the GitHub Star History API endpoint?
GET /repos/{owner}/{repo}/stargazers/history. Use application/vnd.github+json and pin X-GitHub-Api-Version: 2026-03-10 as recommended.
Does it still return each stargazer's identity and time?
No. It returns weekly total and seven daily counts starting Sunday, without identities. It cannot replace functions requiring exact personal records.
Which permissions does Star History need?
Fine-grained tokens need Metadata repository permissions read. Public repositories can be accessed without authentication. Do not blindly grant write or administrator permissions to resolve 403.
Why did I receive only 30 weeks?
per_page supports at most 30 weeks; request later pages, with page at most 100. Results run newest to oldest, so page one is not complete history.
Why do historical daily totals differ from today's star count?
History records stars created daily, while current counts exclude later unstars. Also check complete pagination and whether boundaries were incorrectly redivided into UTC weeks.
Can a fixed IP restore the old personal stargazer list?
No. GitHub privacy and permission rules restrict it. Fixed exits diagnose clear DNS, TLS, 407 or timeout evidence; they cannot bypass access rules.