‹ Reports
The Dispatch

GitHub Repo Analysis: public-apis/public-apis


Executive Summary

The "public-apis/public-apis" repository is a community-curated list of free APIs across diverse domains, maintained by the public-apis organization. It serves as a valuable resource for developers seeking cost-free third-party service integrations. The project is highly popular, with significant community involvement and contributions from APILayer. Currently, the project is actively maintained, with ongoing efforts to update and curate the API list.

Recent Activity

Team Members and Recent Activity

Patterns, Themes, and Conclusions

Risks

Of Note

  1. Promotional Content in README: The presence of APILayer promotional content may detract from the open-source nature of the project, potentially affecting user perception.
  2. Automated Workflows: Effective use of GitHub Actions for testing and validation ensures high-quality contributions but could benefit from increased link validation frequency.
  3. Community Engagement: The diverse range of new API additions reflects strong community involvement, which is crucial for the project's growth and relevance.

Quantified Reports

Quantify issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 3 0 0 3 1
30 Days 4 0 4 4 1
90 Days 14 0 13 14 1
1 Year 107 72 81 101 1
All Time 640 604 - - -

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



3/5
The pull request adds two new APIs to the README file, which enhances the repository by providing more options for users. The changes are correctly formatted and follow the contribution guidelines. However, the update is relatively minor, involving only the addition of two lines to a documentation file. While useful, it lacks significant impact or complexity that would warrant a higher rating. Therefore, it is rated as average.
[+] Read More
3/5
The pull request addresses an important issue by replacing an outdated and unsupported API with a new one, ensuring continued functionality. The change is well-documented, follows contribution guidelines, and is neatly squashed into a single commit. However, the modification is relatively minor, involving only a single line change in the README file. While necessary, it lacks the complexity or significance to warrant a higher rating.
[+] Read More
3/5
The pull request removes a single line from the README.md file, which eliminates a reference to an API that has been discontinued. While this change is necessary to keep the documentation accurate and up-to-date, it is minor in scope and impact. The PR follows contribution guidelines and addresses a relevant issue, but its significance is limited to maintaining documentation accuracy. Thus, it is an average contribution, neither flawed nor particularly noteworthy.
[+] Read More
3/5
The pull request adds a new API entry to the README, which is a minor yet useful addition. It follows the contribution guidelines and addresses a previous mistake by ensuring the correct URL redirection. However, the change is relatively small and not particularly significant in terms of overall project impact, thus warranting an average rating.
[+] Read More
3/5
The pull request adds a new Quran API entry to the README file of the public-apis repository. The change is minor, involving only a single line addition, and adheres to the repository's contribution guidelines. While it is well-formatted and follows the required standards, the update is not particularly significant or complex, warranting an average rating. It does not introduce any new features or substantial improvements to the codebase.
[+] Read More
3/5
The pull request involves a minor update to the README.md file, adding a single entry for 'Nerd Jokes' in an alphabetically ordered list of APIs. The change follows all contribution guidelines and is well-formatted, but it is a small and relatively insignificant update. It does not introduce any new features or fix any bugs, thus it is considered average and unremarkable.
[+] Read More
3/5
The pull request adds a 'Trending Repo of the Day' badge to the README.md file, which is a minor but potentially useful enhancement for visibility. The change is well-documented and follows the project's contribution guidelines. However, it is a small update with limited impact on the overall project functionality or structure. Therefore, it is considered average and unremarkable, fitting the criteria for a rating of 3.
[+] Read More
3/5
The pull request adds a new API entry, 'OpenSanctum', to the list in a well-structured manner, adhering to the repository's contributing guidelines. The change is minor, involving only a single line addition to a README file, and does not introduce any significant functionality or complexity. While it is correctly formatted and useful for users interested in APIs related to churches and holy places, the impact of this change is relatively small and straightforward, thus warranting an average rating.
[+] Read More
3/5
The pull request adds a new API entry to the README file, which is a minor change. The addition follows all the contribution guidelines, including alphabetical ordering and proper formatting. However, the change is relatively insignificant as it only involves adding one line to a documentation file. While it is correctly executed, it does not introduce any significant functionality or improvement to the project. Therefore, it is rated as average.
[+] Read More
3/5
The pull request adds a new API entry to the README file, which is a minor change. It follows the contribution guidelines, such as alphabetical ordering and concise description. However, the change is not significant or complex, merely adding one line to a documentation file. While it is well-executed, it lacks the depth or impact to warrant a higher rating.
[+] Read More

Quantify commits



Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
Arjun C (4rjunc) 0 1/0/0 0 0 0
Nusab Taha (Nusab19) 0 3/0/0 0 0 0
Jonantha Willian (JonanthaW) 0 1/0/0 0 0 0
Diego Velilla (diegovelilla) 0 1/0/0 0 0 0
Abdur-Rahmaan Janhangeer (Abdur-rahmaanJ) 0 1/0/0 0 0 0
Maaz Ibrahim (MaazIbrahim2004) 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 issues and pull requests. With 14 issues opened in the last 90 days and none closed, alongside a total of 371 open pull requests, there is a clear accumulation of unresolved tasks that could impede delivery. The lack of recent commits (none in the last 59 days) further exacerbates this risk, suggesting potential bottlenecks or pauses in development efforts. Additionally, the focus on minor updates rather than substantial feature development indicates prioritization challenges that may affect the project's ability to meet its goals.
Velocity 5 The project's velocity is at high risk due to several factors: zero commits in the last 59 days, indicating a halt in development activity; a substantial backlog of 371 open pull requests, which suggests delays in processing and integrating changes; and a pattern of minor contributions that do not significantly advance project goals. These issues collectively point to stagnation in progress and potential workflow bottlenecks that severely impact the project's pace.
Dependency 3 Dependency risks are moderate, primarily due to reliance on external APIs and libraries. Issues such as #4089 and #4088 highlight concerns with specific API links, which could affect functionality if unresolved. The project's dependencies include common libraries like 'requests' and 'urllib3', which are generally stable but require regular updates to mitigate security vulnerabilities. The absence of version constraints poses additional risks if future updates introduce breaking changes.
Team 3 Team-related risks are moderate, with potential communication challenges indicated by the lack of comments on issues and delayed pull request processing. The absence of recent commits suggests possible capacity constraints or prioritization issues within the team. However, adherence to contribution guidelines and structured review processes indicate some level of team organization and quality control.
Code Quality 2 Code quality risks are relatively low due to stringent review processes and adherence to contribution guidelines. Despite the predominance of minor contributions, these changes maintain high formatting and documentation standards. Automated tests for format and link validation further support code quality by catching errors early. However, the focus on documentation updates over substantial code changes may limit opportunities for identifying deeper quality issues.
Technical Debt 4 Technical debt risks are significant due to the accumulation of unresolved issues and pull requests, alongside stagnant commit activity. The lack of recent development efforts suggests potential debt accumulation as outdated or unaddressed problems persist. While automated tests help mitigate some risks, the backlog indicates underlying technical debt that could affect long-term maintainability.
Test Coverage 3 Test coverage is moderate, with comprehensive unit tests for format and link validation indicating a structured approach to error handling. However, there is no information on test execution frequency or integration into CI/CD pipelines, which could diminish their effectiveness. Additionally, the focus on specific validation areas suggests potential gaps in testing other critical functionalities.
Error Handling 2 Error handling risks are relatively low due to detailed unit tests for format and link validation functions. These tests cover a wide range of scenarios, ensuring robust mechanisms for identifying and reporting errors. However, without information on broader test coverage or execution frequency, there may be unaddressed gaps that could impact error detection in other areas.

Detailed Reports

Report On: Fetch issues



Recent Activity Analysis

The recent activity in the "public-apis/public-apis" repository shows a moderate level of engagement with 36 open issues. Notably, there are several issues related to broken or deprecated API links, such as #4089 regarding the Age of Empires II API and #4088 concerning the Gitter API link. These indicate a recurring theme of maintaining the accuracy and availability of listed APIs. Additionally, some issues like #4074 involve code snippets and discussions about API key usage, highlighting a focus on practical implementation challenges.

Several issues, such as #4052 and #4043, suggest requests for removing or adding APIs, reflecting ongoing curation efforts. The presence of issues like #4012, which reports a redirection to an unrelated website, underscores the need for vigilance against potential security risks. Themes of broken links and service discontinuation are prevalent, indicating a need for regular updates and community involvement to keep the repository reliable.

Issue Details

  • #4091: Created 1 day ago by Ian Howarth. Status: Open.
  • #4089: Created 2 days ago by Kolja Sam. Status: Open.
  • #4088: Created 2 days ago by Kolja Sam. Status: Open.
  • #4074: Created 28 days ago, edited 11 days ago by ffapimaker. Status: Open.
  • #4052: Created 46 days ago by Billy Fischbach. Status: Open.

These issues highlight recent concerns about API availability and functionality, with varying levels of urgency based on their impact on users relying on these APIs for development purposes.

Report On: Fetch pull requests



Analysis of Pull Requests for "public-apis/public-apis" Repository

Overview

The "public-apis/public-apis" repository is a community-driven project that curates a comprehensive list of free APIs across various domains. It is highly popular with over 321k stars and 34k forks, indicating its significance in the developer community. The repository encourages contributions and has a structured process for adding new APIs or updating existing ones.

Notable Open Pull Requests

  1. #4090: Add Vidsrc API to Video section

    • State: Open
    • Created: 2 days ago
    • Details: This PR proposes adding the Vidsrc API to the Video section. The submission adheres to the contributing guidelines, including proper formatting and a useful description.
    • Significance: The addition of a new video streaming API could be valuable for developers looking for video-related services.
  2. #4087: Add Groq API to Machine Learning

    • State: Open
    • Created: 3 days ago
    • Details: This PR suggests adding the Groq API, which offers fast inference for open-source models. It follows all contribution guidelines.
    • Significance: Enhances the Machine Learning category with a potentially high-performance API.
  3. #4086: ADDED opensanctum to the API list

    • State: Open
    • Created: 5 days ago
    • Details: Proposes adding OpenSanctum, an API providing information on churches and holy places.
    • Significance: Expands the repository's religious data offerings.
  4. #4085: Update README.md

    • State: Open
    • Created: 13 days ago
    • Details: Adds Nerd Jokes to the list, enhancing the entertainment category with tech and programmer jokes.
    • Significance: Provides light-hearted content for developers.
  5. #4083: Remove KONTESTS API

    • State: Open
    • Created: 14 days ago
    • Details: Suggests removing an outdated API that has been discontinued.
    • Significance: Important for maintaining the accuracy and relevance of the repository.

Notable Closed Pull Requests

  1. #4073: Texto alterado pelo repositorio local

    • State: Closed without merge
    • Details: Appears to be a test or accidental submission as it contains non-English text not relevant to the repository's purpose.
    • Significance: Highlights the importance of reviewing submissions for relevance and adherence to guidelines.
  2. #4060: Main

    • State: Closed without merge
    • Details: Contains changes unrelated to the repository's focus on APIs.
    • Significance: Ensures that only relevant contributions are accepted.
  3. #4049: Remove APILayer messaging, establish context

    • State: Closed without merge
    • Details: Proposed changes to README messaging but was not merged, possibly due to misalignment with project goals.
    • Significance: Emphasizes maintaining consistent project messaging.
  4. #4022: Adding Open Government of Kazakhstan

    • State: Closed without merge
    • Details: Suggested adding Kazakhstan's government open data but was not merged.
    • Significance: Shows ongoing efforts to expand government data offerings, though this particular submission was not accepted.

Key Observations

  • The repository continues to receive a high volume of contributions, reflecting its active community involvement.
  • There is a mix of new API additions and maintenance tasks (e.g., removing outdated APIs) among open PRs.
  • Some PRs are closed without merging due to irrelevance or non-compliance with contribution guidelines, highlighting the importance of adhering to submission standards.
  • Recent PRs focus on diverse categories such as video streaming, machine learning, religious data, and humor, indicating broad interest areas among contributors.

Recommendations

  • Encourage contributors to thoroughly review contribution guidelines before submitting PRs to reduce irrelevant or non-compliant submissions.
  • Maintain active communication with contributors whose PRs are closed without merging to provide feedback and encourage future contributions.
  • Continue prioritizing updates that enhance the accuracy and relevance of the repository's content, such as removing discontinued APIs or correcting outdated links.

Report On: Fetch Files For Assessment



Source Code Assessment

File: README.md

Structure and Quality

  • Length and Content: The file is extensive, with 1888 lines and 192036 characters. It serves as the central documentation for the repository, providing a comprehensive list of free APIs across various categories.
  • Organization: The README is well-organized with a clear index and categorized sections. Each category contains a table listing APIs with details such as description, authentication type, HTTPS support, and CORS policy.
  • Clarity: The documentation is clear and provides sufficient information for users to understand the purpose of each API.
  • Links: There are numerous links to external resources, including API documentation and usage examples. These links are crucial for users to access further details about each API.
  • Promotional Content: There is a noticeable presence of promotional content related to APILayer, which might be seen as distracting by some users.

Recommendations

  • Consider reducing promotional content for APILayer to maintain focus on the open-source nature of the project.
  • Regularly update the README to ensure all links are functional and the information remains current.

File: .github/workflows/test_of_push_and_pull.yml

Structure and Quality

  • Purpose: This GitHub Actions workflow is designed to run tests on push and pull requests to the master branch.
  • Steps: The workflow checks out the repository, sets up Python, installs dependencies, validates Markdown format, checks pull request changes, and verifies duplicate links.
  • Clarity: The workflow is straightforward and well-documented with descriptive step names.

Recommendations

  • Ensure that the Python version used in the workflow is compatible with all dependencies specified in scripts/requirements.txt.
  • Consider adding more detailed logging or comments within the script for better maintainability.

File: .github/workflows/test_of_validate_package.yml

Structure and Quality

  • Purpose: This workflow runs unit tests for the validate package on push and pull requests to the master branch.
  • Steps: It follows a similar structure to other workflows by checking out the repository, setting up Python, installing dependencies, and running tests.
  • Clarity: The workflow is concise and effectively set up for its intended purpose.

Recommendations

  • Regularly update test cases in scripts/tests to cover new features or changes in functionality.

File: .github/workflows/validate_links.yml

Structure and Quality

  • Purpose: This workflow validates all links in README.md using a scheduled cron job.
  • Steps: Similar setup steps as other workflows but focuses on link validation.
  • Clarity: Clearly defined steps make it easy to understand its function.

Recommendations

  • Consider increasing the frequency of link validation if broken links are a common issue.
  • Implement error handling for network-related issues during link validation.

File: scripts/tests/test_validate_format.py

Structure and Quality

  • Purpose: Contains unit tests for format validation functions in validate/format.py.
  • Coverage: Tests cover various aspects of format validation such as alphabetical order, title syntax, description length, etc.
  • Clarity: Tests are well-named and use assertions effectively to verify expected outcomes.

Recommendations

  • Ensure test coverage includes edge cases for all functions in validate/format.py.
  • Consider using parameterized tests to reduce redundancy.

File: scripts/tests/test_validate_links.py

Structure and Quality

  • Purpose: Contains unit tests for link validation functions in validate/links.py.
  • Coverage: Tests include finding links in text, checking duplicates, user agent spoofing, etc.
  • Clarity: Tests are clearly defined with appropriate use of assertions.

Recommendations

  • Expand test cases to include more diverse scenarios such as different types of invalid URLs or network conditions.

File: scripts/validate/format.py

Structure and Quality

  • Purpose: Script responsible for validating the format of entries in README.md.
  • Functionality: Includes functions for checking alphabetical order, title syntax, description length, etc.
  • Clarity: Functions are modular with descriptive names. Error messages are informative.

Recommendations

  • Optimize regular expressions where possible for performance improvements.
  • Add more inline comments explaining complex logic or regex patterns.

File: scripts/validate/links.py

Structure and Quality

  • Purpose: Script responsible for validating links found in README.md.
  • Functionality: Includes functions for finding links, checking duplicates, verifying link status, etc.
  • Clarity: Code is well-organized with clear function definitions.

Recommendations

  • Implement retry logic for network requests to handle transient errors more gracefully.
  • Consider caching results of link checks to reduce redundant network calls.

Report On: Fetch commits



Development Team and Recent Activity

Team Members and Recent Activity

  • APILayer (apilayer-admin)

    • Frequent updates to README.md with the most recent update 59 days ago.
    • Merged a pull request (#3805) 244 days ago, which involved adding Postman logos, removing dead links, and creating popular APIs and categories.
    • Added new API entries and performed maintenance tasks like removing broken links and updating existing ones.
  • Kyle Calica (stcalica)

    • Contributed to the repository by adding Postman logos, removing dead links, and creating popular APIs and categories section 291 days ago.
  • Matheus Felipe (matheusfelipeog)

    • Actively involved in maintaining the repository by removing broken APIs, updating links, and adding new APIs.
    • Notable contributions include removing multiple broken APIs on various dates (e.g., 1019 days ago), adding new APIs to different categories, and improving scripts for validation.
  • Zaldy Pagaduan Jr. (zopagaduanjr)

    • Added PRC Exam Schedule to the Government category 1019 days ago.
  • FayeNichols

    • Added Hirak OCR to Text Analysis and "Hirak IP to Country" to Geocoding 1019 days ago.
  • Diego Parrilla (diegoparrilla)

    • Added Threat Jammer to Security category 1023 days ago.
  • Arne Stittrich (Stitti)

    • Added MFaaS to Video category 1023 days ago.
  • S.G. Sudhakar (sudhakar76)

    • Added WhatJobs to Jobs category 1023 days ago.
  • Arnaud (Buco7854)

    • Updated waifu.im CORS settings from No to Yes 1023 days ago.
  • Yann Bertrand (yannbertrand)

    • Reverted several commits related to README.md updates and file uploads around 1024 days ago.

Patterns, Themes, and Conclusions

  • Frequent Updates: The repository sees regular updates primarily focused on maintaining the list of APIs by adding new entries, updating existing ones, and removing broken links. This indicates active maintenance and a commitment to keeping the resource current.

  • Collaboration: Multiple contributors are involved in enhancing the repository's content, suggesting a collaborative effort in managing this extensive list of APIs.

  • Focus on Quality: There is a strong emphasis on quality control, as evidenced by frequent removals of broken links and updates to API information. This ensures that users have access to reliable data sources.

  • Community Engagement: The repository benefits from community contributions, with various developers adding new APIs or improving existing entries. This engagement helps in expanding the repository's scope and utility for developers worldwide.