‹ Reports
The Dispatch

GitHub Repo Analysis: public-apis/public-apis


Executive Summary

The "public-apis/public-apis" repository, managed by the public-apis organization, is a widely-used, community-curated list of free APIs across numerous domains. It serves as a vital resource for developers integrating APIs into their projects. Despite its popularity, with over 329,590 stars and 34,945 forks, the project faces challenges in maintaining the integrity and security of its API listings. The project's trajectory indicates a need for more active maintenance and community engagement to address ongoing issues.

Recent Activity

Team Members and Recent Activity

Recent Issues and Pull Requests

  1. #4158: Created 13 days ago; lacks details.
  2. #4030: Involves adding Weatherstack API; edited recently.
  3. PR #4165: Minor README.md change; open for 1 day.
  4. PR #4164: Adds new API entry; checklist incomplete.

These activities indicate a focus on documentation and minor updates rather than substantial feature development or bug fixes.

Risks

Of Note

Quantified Reports

Quantify issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 0 0 0 0 0
30 Days 4 0 0 4 1
90 Days 18 0 8 18 1
1 Year 99 59 66 97 1
All Time 653 602 - - -

Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.

Rate pull requests



2/5
The pull request adds a new F1 API to the list in the README.md file. While it follows the repository's contribution guidelines and is formatted correctly, the change is minimal, involving only a single line addition. It does not introduce any significant functionality or improvement to the project. The contribution is useful but lacks depth and impact, making it a minor update rather than a substantial enhancement.
[+] Read More
2/5
The pull request adds a single new entry to the README.md file, which is a minor update. However, it contains a spelling error ('Unkown' instead of 'Unknown') in the CORS column, which reduces its quality. This oversight suggests a lack of thoroughness in reviewing the changes before submission. The addition itself may be useful but is not significant enough to warrant a higher rating.
[+] Read More
2/5
The pull request is insignificant as it only adds a test edit to the README file for learning purposes. It does not contribute any meaningful changes or improvements to the project and lacks any technical or functional enhancements. Such a minor change, especially one meant for learning, does not warrant a high rating.
[+] Read More
2/5
The pull request makes a trivial change by removing an unnecessary blank line in the README.md file. While it adheres to the contribution guidelines, the change is insignificant and does not add any substantial value or improvement to the project. Such minor adjustments typically do not warrant a high rating unless they are part of a larger, meaningful update.
[+] Read More
3/5
The pull request adds a new API entry to the README file, following all contribution guidelines. The change is minor, involving only a single line addition, and does not introduce any significant functionality or improvement to the project. The description provided is concise and within character limits, but there is a typo in 'Unknown' which slightly detracts from the quality. Overall, this PR is average and unremarkable, fitting well within the project's existing structure without notable flaws.
[+] Read More
3/5
The pull request adds a single entry for the Bluesky API to the README file in the Social category. It follows all contribution guidelines, including alphabetical ordering and formatting requirements. However, the change is minimal, involving only one line addition, which does not significantly enhance the repository's functionality or content. While it is a correct and necessary update, it lacks depth or substantial impact, making it an average contribution.
[+] Read More
3/5
The pull request adds a new API to the Vehicles section of a public APIs repository. It follows all the contributing guidelines, such as formatting and ordering, and provides a concise description. However, the change is relatively minor, involving only the addition of a single line to a README file. While this addition might be useful for developers interested in vehicle-related data, it does not represent a significant or complex change to the project. Therefore, it is rated as average or unremarkable.
[+] Read More
3/5
The pull request adds two new APIs to the public-apis repository, which are Nationalize.io and Open Exchange Rates. These additions are formatted correctly according to the project's guidelines, and they provide useful functionalities for predicting nationality from names and accessing currency exchange rates, respectively. However, the changes are relatively minor, involving only a few lines in the README.md file. While the additions are beneficial, they do not represent a significant or complex change to the codebase. Therefore, this PR is rated as average.
[+] Read More
3/5
The pull request adds a single entry to the README.md file, which is a minor change. It follows the project's contribution guidelines by adding a new API in alphabetical order and providing a concise description. However, the change is not particularly significant or complex, as it involves adding just one line to a documentation file. While it is correctly formatted and useful, it does not introduce any substantial improvements or features to the project, thus warranting an average rating.
[+] Read More
4/5
The pull request significantly improves the CONTRIBUTING.md file by enhancing readability, clarity, and accessibility. It introduces a more engaging format with emojis, concise language, and clear examples, making it easier for contributors to understand guidelines. The addition of a 'Pro Tips' section and updated links further aids contributors, especially first-timers. However, while these changes are beneficial, they are not groundbreaking or technically complex, which is why the rating is not a 5. Overall, it's a well-executed update that enhances the contribution process.
[+] Read More

Quantify commits



Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
Imanuel Revo Admojo (F-777) 0 2/0/0 0 0 0
Sachin Rathod (FNICKE) 0 1/0/0 0 0 0
Rafa Canosa (Rafacv23) 0 1/0/0 0 0 0
None (KrEnModel) 0 1/0/1 0 0 0
Marcus Andersson (Soderhamn) 0 1/0/0 0 0 0
Masih (don-masih) 0 1/0/0 0 0 0
Nikhil Kotra (nikhil-1e9) 0 1/0/0 0 0 0
Nilesh Sheth (nileshsheth) 0 2/0/0 0 0 0
Ankit Yadav (ankit02yadav) 0 1/0/0 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Quantify risks



Project Risk Ratings

Risk Level (1-5) Rationale
Delivery 4 The project faces significant delivery risks due to a backlog of 51 open issues and 419 open pull requests, indicating potential bottlenecks in issue resolution and contribution management. The lack of recent commits further exacerbates this risk, suggesting stalled progress. Specific issues like #4030 (Weatherstack API) and security concerns (#4153, #4131) highlight unresolved critical tasks that could impede delivery.
Velocity 5 The project's velocity is critically low, with no commits in the last 14 days and a backlog of unresolved issues and pull requests. The lack of activity suggests a complete halt in development, posing severe risks to project momentum. The absence of progress on open issues and pull requests indicates a need for immediate intervention to restore development pace.
Dependency 4 Dependency risks are elevated due to unresolved security issues (#4153, #4131) and broken API links (#4096, #4088), which could compromise the project's reliability. The reliance on external APIs without regular updates or audits increases the risk of dependency failures affecting project outcomes.
Team 3 Team risks are moderate, with indications of communication challenges and low engagement in issue discussions (only 8 comments in 90 days). The lack of recent commits despite multiple developers suggests potential coordination or motivation issues that need addressing to improve team dynamics.
Code Quality 3 Code quality risks are moderate, with minor errors in documentation (e.g., 'Unkown' instead of 'Unknown') suggesting lapses in attention to detail. While automated tests exist for validating format and links, their effectiveness is contingent on regular execution and updates.
Technical Debt 4 Technical debt is accumulating due to unresolved issues and a focus on low-impact documentation updates rather than addressing critical problems. The backlog of open pull requests further contributes to this risk, as it indicates potential delays in integrating necessary improvements.
Test Coverage 2 Test coverage appears adequate with automated tests for format and link validation present. However, the lack of recent commits raises concerns about the regular execution of these tests, which is crucial for maintaining their effectiveness in catching errors early.
Error Handling 3 Error handling mechanisms are present but may be underutilized due to the stagnation in development activity. Automated tests for error detection exist, but their impact is limited if not executed regularly. The presence of unresolved security issues also highlights potential gaps in error reporting and management.

Detailed Reports

Report On: Fetch issues



Recent Activity Analysis

Recent GitHub issue activity in the "public-apis/public-apis" repository shows a range of issues being opened and updated, with a total of 51 open issues. Notably, several issues pertain to broken or deprecated API links, such as #4131 and #4089, which indicate potential security risks or inactive services. There are also multiple reports of APIs being compromised or redirecting to malicious sites, such as #3984 and #3977. This suggests a recurring theme of maintaining the integrity and reliability of the listed APIs.

Several issues highlight the need for updates or corrections to existing entries, like #4030, which involves adding a new API with detailed specifications. Additionally, there are reports of APIs that have been hijacked or are causing virus warnings (#4153), indicating a critical need for regular audits and verifications.

Issue Details

  • #4158: Created 13 days ago by 2629728088. No additional details provided.

  • #4030: "Add Weatherstack API" created 145 days ago by JoãoMarcelo, edited 7 days ago. The issue involves adding a new API entry with comprehensive details including authentication requirements and Postman integration.

  • #4153: "Tronal Dump gives virus warnings" created 14 days ago by Matthieu Mosch. This issue reports virus warnings when accessing the Tronald Dump site.

  • #4149: "Opening Hours update" created 16 days ago by AdaminX. It requests an update to operational hours information.

  • #4140: "Add more" created 26 days ago by Humaiza Naz. Requests more API examples without further specifics.

  • #4132: "Public" created 34 days ago by surafel142, edited 27 days ago. Lacks description; comment by Abdulaziz indicates missing information.

  • #4131: "Animal Crossing API Links to Malware Site" created 34 days ago by Ian Mosley, edited 27 days ago. Reports potential hijacking or malicious modification of an API link.

These issues underscore the importance of maintaining accurate and secure API listings in the repository. Regular checks and community feedback are crucial for ensuring the reliability of the resources provided.

Report On: Fetch pull requests



Analysis of Pull Requests

Open Pull Requests

  1. PR #4165: Update README.md

    • State: Open
    • Created: 1 day ago
    • Details: This PR by Ankit Yadav involves a minor change in the README.md file, removing an extra line break. The checklist indicates that the contributor has not squashed all changes into a single commit, which is a requirement according to the contribution guidelines.
  2. PR #4164: Update README.md

    • State: Open
    • Created: 2 days ago
    • Details: Marcus Andersson's PR adds a new API entry to the README.md. However, none of the checklist items are marked as completed, suggesting that this PR might not be ready for merging. It lacks necessary formatting and compliance with guidelines.
  3. PR #4163: Update CONTRIBUTING.md

    • State: Open
    • Created: 7 days ago
    • Details: Sachin Rathod proposes extensive updates to the CONTRIBUTING.md file to improve clarity and readability. This PR seems well-prepared, with all checklist items marked as completed. The enhancements could be beneficial for new contributors.
  4. PR #4162: Added a test edit to README for learning pull requests

    • State: Open
    • Created: 9 days ago
    • Details: This PR by Masih is clearly a test and not intended for actual merging. It lacks adherence to the contribution guidelines and should be closed without merging.
  5. PR #4161: Add Bluesky API

    • State: Open
    • Created: 11 days ago
    • Details: Nikhil Kotra's PR adds a new API entry for Bluesky in the Social category. The submission appears complete and adheres to the contribution guidelines.
  6. PR #4160: Add Fueleconomy.gov API

    • State: Open
    • Created: 11 days ago
    • Details: Nilesh Sheth introduces an API related to vehicle fuel economy data. The PR is well-structured and follows all guidelines, making it a strong candidate for merging.
  7. PR #4159: Added Nationalize.io to Test Data and Open Exchange Rates to Currency Exchange

    • State: Open
    • Created: 11 days ago
    • Details: Another contribution by Nilesh Sheth, adding two APIs. This PR is comprehensive and meets all checklist requirements.
  8. PR #4157: Add f1 api

    • State: Open
    • Created: 13 days ago
    • Details: Rafa Canosa adds an F1 data API. The submission is complete and adheres to guidelines, making it ready for review.
  9. PR #4156 & #4155 by Imanuel Revo Admojo

    • Both involve updates to README.md but lack adherence to several checklist items, indicating they may not be ready for merging.
  10. PR #4146 onwards (Older than 20 days)

    • These older PRs include various additions and updates but have been open for a significant time without resolution, suggesting potential issues or low priority.

Closed Pull Requests

  1. PR #4154 & #4144

    • Both were closed without being merged shortly after creation, indicating they might have been duplicates or not aligned with project goals.
  2. PRs like #4134, #4106, and others closed without merging

    • These indicate submissions that likely did not meet project standards or were superseded by other contributions.

Notable Issues

  • Several open PRs lack adherence to contribution guidelines, particularly regarding squashing commits and ensuring proper formatting.
  • Some open PRs appear to be tests or learning exercises (e.g., PR #4162), which should be closed promptly.
  • There are numerous older open PRs that may need attention or closure if they are no longer relevant.
  • Closed PRs often indicate submissions that did not meet requirements or were duplicates; these should be reviewed for any valuable content that can be salvaged.

Recommendations

  • Prioritize reviewing well-prepared recent PRs like #4163, #4161, and #4160.
  • Close test or incomplete PRs like #4162.
  • Address older open PRs to determine their relevance or close them if they are outdated.
  • Encourage contributors to adhere strictly to guidelines, especially regarding squashing commits and completing checklists before submission.

Report On: Fetch Files For Assessment



Source Code Assessment

File Analysis

1. CONTRIBUTING.md

  • Purpose: This file provides guidelines for contributing to the "public-apis" project.
  • Content:
    • Clearly outlines the project's stance against using the repository as a marketing tool for paid APIs.
    • Provides detailed formatting instructions for API entries, including table structure and acceptable values for fields like Auth and CORS.
    • Includes comprehensive pull request guidelines, emphasizing alphabetical ordering, commit message conventions, and squashing commits.
    • Offers practical tips for managing forks and branches, ensuring contributors stay updated with the main repository.
  • Quality:
    • The document is well-structured and thorough, offering clear and actionable guidance to contributors.
    • It effectively communicates the project's expectations, reducing the likelihood of poorly formatted or irrelevant contributions.

2. scripts/tests/test_validate_format.py

  • Purpose: Contains unit tests for validating the format of API entries in the repository.
  • Content:
    • Utilizes Python's unittest framework to test various functions from validate.format.
    • Tests cover error message generation, category content retrieval, alphabetical order checks, title and description validation, and more.
    • Ensures that each function behaves correctly under different scenarios, including edge cases.
  • Quality:
    • The tests are comprehensive and well-organized, covering a wide range of input scenarios.
    • Test names are descriptive, making it easy to understand what each test is verifying.
    • The use of subtests enhances readability and helps isolate specific failure points.

3. scripts/tests/test_validate_links.py

  • Purpose: Contains unit tests for validating links in the repository.
  • Content:
    • Tests functions from validate.links, including link extraction, duplicate detection, user-agent spoofing, host extraction, and Cloudflare protection checks.
    • Uses mock responses to simulate different server responses for testing Cloudflare protection detection.
  • Quality:
    • Tests are well-structured and cover key functionalities related to link validation.
    • The use of mock objects is appropriate for simulating network interactions without actual HTTP requests.
    • Test methods are concise and focused on specific aspects of link validation.

4. scripts/validate/format.py

  • Purpose: Script responsible for validating the format of API entries in the repository.
  • Content:
    • Defines constants for accepted values in fields like Auth, HTTPS, and CORS.
    • Implements functions to check alphabetical order, title syntax, description length, authentication method format, HTTPS support, CORS support, and overall entry validity.
    • Provides error messages with line numbers for easy debugging.
  • Quality:
    • The script is logically organized with clear separation of concerns across functions.
    • Error messages are informative and follow a consistent format, aiding in quick identification of issues.
    • Type hints enhance code readability and maintainability.

5. scripts/validate/links.py

  • Purpose: Script responsible for validating links within the repository.
  • Content:
    • Implements functions to find links in text or files, check for duplicates, generate fake user agents, extract hosts from links, detect Cloudflare protection, and verify link functionality.
    • Includes logic to handle various HTTP errors gracefully during link validation.
  • Quality:
    • The script is robust in handling different scenarios related to link validation.
    • Functions are well-documented with clear purpose statements at the beginning of each function.
    • Error handling is comprehensive, ensuring that unexpected issues do not cause the script to fail silently.

Overall Assessment

The source code files provided are well-written and demonstrate a high level of attention to detail. The contributing guidelines are clear and comprehensive, fostering a healthy contribution environment. The test scripts effectively cover key functionalities related to format and link validation, ensuring that contributions adhere to the project's standards. The validation scripts themselves are logically structured and include thorough error handling mechanisms. Overall, the codebase reflects best practices in open-source project management and quality assurance.

Report On: Fetch commits



Development Team and Recent Activity

Team Members and Recent Activity

  • APILayer (apilayer-admin)

    • Commits:
    • 129 days ago: Updated README.md
    • 165 days ago: Updated README.md
    • 219 days ago: Updated README.md
    • 243 days ago: Updated README.md
    • 314 days ago: Merged pull request #3805, added Postman logos, removed dead links, created popular APIs and Categories section.
    • 536 days ago: Added new API to README.md
  • Kyle Calica (stcalica)

    • Commits:
    • 361 days ago: Added Postman logos, removed dead links, created popular APIs and Categories section.
  • Matheus Felipe (matheusfelipeog)

    • Commits:
    • Multiple commits 1089 days ago removing broken APIs and adding new ones such as Free Url Shortener to URL Shorteners, PRC Exam Schedule to Government, Hirak OCR to Text Analysis, Hirak IP to Country to Geocoding.
    • Commits from 1093 days ago involved removing broken APIs.
  • Zaldy Pagaduan Jr. (zopagaduanjr)

    • Commits:
    • 1089 days ago: Added PRC Exam Schedule to Government.
  • FayeNichols

    • Commits:
    • Added Hirak OCR to Text Analysis and Hirak IP to Country to Geocoding.
  • Diego Parrilla (diegoparrilla)

    • Commits:
    • Added Threat Jammer to Security.
  • Arne Stittrich (Stitti)

    • Commits:
    • Added MFaaS to Video.
  • S.G. Sudhakar (sudhakar76)

    • Commits:
    • Added WhatJobs to Jobs.
  • Arnaud (Buco7854)

    • Commits:
    • Updated waifu.im CORS settings.
  • Yann Bertrand (yannbertrand)

    • Commits:
    • Multiple reverts of previous commits related to README.md updates.

Patterns and Themes

  1. Inactivity in Recent Months: The most recent commit activity was over four months ago, indicating a period of inactivity or low activity in the repository.

  2. Focus on Documentation Updates: A significant portion of the commits involved updating the README.md file, which suggests a focus on maintaining up-to-date documentation for users.

  3. Collaboration on Large Updates: The addition of new sections like popular APIs and categories involved collaboration between multiple contributors such as APILayer and Kyle Calica.

  4. Maintenance of API List: There was a concerted effort by contributors like Matheus Felipe to remove broken APIs and add new ones, ensuring the list remains relevant and functional.

  5. Community Contributions: The repository shows evidence of contributions from various community members, highlighting its open-source nature and reliance on community input for updates and maintenance.