‹ Reports
The Dispatch

GitHub Repo Analysis: public-apis/public-apis


Executive Summary

The "public-apis" repository is a widely-used, community-curated list of free APIs across various domains, maintained by contributors and APILayer. It serves as a valuable resource for developers seeking APIs for different applications. The project is in a robust state with active contributions and regular updates, although it faces challenges related to link integrity and API security.

Recent Activity

Team Members and Activities

  1. APILayer (apilayer-admin): Updated README.md 25 days ago.
  2. Kyle Calica (stcalica): Contributed to major updates 257 days ago.
  3. Matheus Felipe (matheusfelipeog): Active in link updates and script improvements 989-1022 days ago.

Recent Pull Requests

Recent Issues

Recent activities show a focus on adding new APIs and maintaining existing entries, though many submissions lack adherence to guidelines.

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 2 0 0 2 1
90 Days 19 0 13 19 1
1 Year 111 80 78 104 1
All Time 637 605 - - -

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 introduces a single line of code that is explicitly stated to be a test or experiment, with no functional or meaningful contribution to the project. It lacks significance, completeness, and relevance to the project's goals, and does not warrant a higher rating due to its trivial nature.
[+] Read More
2/5
The pull request adds a single comment line "#Functions" to the script, which is insignificant and does not enhance functionality or clarity. It lacks meaningful contribution to the codebase, such as fixing bugs or adding features, and does not meet the criteria for a higher rating.
[+] Read More
2/5
The pull request adds a single HTML line with a basic 'hello' message, which is insignificant in terms of functionality or contribution to the project. It lacks complexity, thoroughness, and does not adhere to any specific guidelines or improvements outlined in the project's contributing guide. The change is trivial and does not provide any meaningful enhancement or fix.
[+] Read More
3/5
The pull request adds a new API, urlDNA.io, to the README.md file of the public-apis repository. The change is minor, involving a single line addition to a list of APIs. While the submission adheres to the repository's contribution guidelines, the update is not particularly significant or complex, as it merely involves updating documentation with a new entry. There are no apparent flaws, but the impact and complexity of the change are minimal, making it an average contribution.
[+] Read More
3/5
The pull request adds a new entry for IPQuery to the README.md file of the public-apis repository. The change is minor, consisting of a single line addition that follows the project's contribution guidelines, such as alphabetical ordering and concise description. While it is a useful addition to the list of APIs, it is not a significant or complex change, thus warranting an average rating of 3.
[+] Read More
3/5
The pull request adds a new API to the public-apis repository, which is a routine task for this project. The contributor has followed all the necessary guidelines, such as formatting and ordering, and provided a concise description. However, the change is not particularly significant or complex, involving only minor additions to a README file. While it is well-executed, it lacks the depth or impact required for a higher rating.
[+] Read More
3/5
The pull request adds a new API to the list in the README.md file, which is a minor change. It follows the contribution guidelines, such as formatting and description length. However, the change is not significant or complex, as it only involves adding a single line to a documentation file. This makes it an average contribution, deserving a rating of 3.
[+] Read More
3/5
The pull request adds a new entry for the weatherUSA API to the README file, following all contribution guidelines effectively. The change is minor, involving only a single line addition to an existing list of APIs. It is well-formatted and adheres to the project's standards, but the significance of the change is limited as it simply adds another API to a list without any substantial code or feature development. Thus, it merits an average rating.
[+] Read More
3/5
The pull request updates a deprecated API link to its successor, which is a necessary maintenance task. The change is minimal, affecting only one line in the README file, and involves updating the URL and authentication method. While this update is important for maintaining the functionality of the repository, it is a straightforward change with no significant complexity or innovation involved. Therefore, it merits an average rating of 3.
[+] Read More
3/5
The pull request adds a new API, 'Holidays.rest', to the Calendar section of the README.md file, which is a straightforward update. The changes are minor, involving only a few lines in a markdown file, and adhere to the repository's contribution guidelines. While the addition is useful, it is not particularly significant or complex, hence it merits an average rating. The PR is well-formed and complete but lacks any notable impact or complexity that would warrant a higher score.
[+] Read More

Quantify commits



Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
Wesley Haines (kremit) 0 1/0/0 0 0 0
IPQuery (ipqwery) 0 1/0/0 0 0 0
lkchen (lk-chen) 0 0/0/1 0 0 0
Serhat M. Dundar (msdundar) 0 1/0/0 0 0 0
Keiler Guardo Herrera (reliek21) 0 1/0/1 0 0 0
Samuel Ndubuisi (Sammieblz) 0 1/0/0 0 0 0
Dipa Mistre (dipamitro) 0 1/0/0 0 0 0
yousif (yousifj129) 0 1/0/0 0 0 0
Rodrigo Boet (rudmanmrrod) 0 1/0/0 0 0 0
Zuber Khan (zuberkhan01st) 0 1/0/0 0 0 0
None (Rickthedebugger) 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 unresolved issues and a lack of substantial code contributions. With 32 open issues, many older than 30 days, and no recent commits to the master branch, the project's ability to meet its goals is compromised. Issues such as #4000 and #4012 highlight dependency risks with external APIs, further impacting delivery. The absence of structured planning or milestones exacerbates these challenges.
Velocity 4 The project's velocity is at risk due to stagnant development activity. There have been no new commits in the past 25 days, and recent pull requests are either minor or documentation updates, not contributing significantly to progress. The backlog of unresolved issues and the closure of pull requests without merging, such as #4060 and #3928, indicate inefficiencies in the review process and potential misalignment on project priorities.
Dependency 5 Dependency risks are high due to reliance on external APIs that are compromised or malfunctioning, as seen in issues #4000 and #4012. These dependencies pose security threats and reliability concerns, which are critical for the project's functionality. The lack of active maintenance further increases the risk of outdated dependencies causing failures.
Team 3 Team risks are moderate, with potential communication challenges indicated by the lack of comments on issues and the rejection of multiple pull requests without merging. However, there is active participation from contributors, as seen in recent pull request activity. The absence of substantial code contributions might reflect resource constraints or misalignment on priorities rather than team dysfunction.
Code Quality 3 Code quality is moderately at risk due to the focus on documentation updates rather than core codebase improvements. While validation scripts like 'format.py' and 'links.py' emphasize error handling and data integrity, the lack of substantial code changes suggests potential neglect of deeper code quality issues.
Technical Debt 4 Technical debt is accumulating due to unresolved issues and a lack of active development. The focus on minor documentation updates rather than core improvements indicates that technical debt may not be addressed adequately. The absence of recent commits suggests that existing problems remain unresolved, potentially leading to more significant issues over time.
Test Coverage 2 Test coverage appears to be strong based on comprehensive unit tests for format and link validation functions. These tests ensure high code quality by catching errors early in the development process. However, there is no evidence of broader testing practices beyond these areas.
Error Handling 2 Error handling is robust within specific validation scripts like 'format.py' and 'links.py', which systematically check for errors and inconsistencies. This proactive approach reduces technical debt by ensuring data integrity from the outset. However, there is limited information on error handling practices beyond these validation tools.

Detailed Reports

Report On: Fetch issues



GitHub Issues Analysis

Recent Activity Analysis

The recent activity in the "public-apis" repository shows a steady flow of open issues, with 32 currently open. Many issues involve requests to add or update API links, while others report broken links or compromised APIs. Several issues highlight APIs that are no longer functional, often due to changes in hosting services like Heroku.

Notable anomalies include multiple reports of APIs being used for malvertising (#4000, #3977) and several issues where APIs have been compromised or are redirecting to unwanted sites (#4012, #3984). There is a recurring theme of issues related to outdated or broken API links, particularly those affected by Heroku's pricing changes (#3987, #3384). Additionally, some issues involve contributors seeking guidance on how to contribute effectively (#4043, #4017).

Issue Details

Most Recently Created Issues

  1. #4052: Placekitten

    • Priority: Not specified
    • Status: Open
    • Created: 12 days ago
    • Details: Request to remove an API that is no longer available.
  2. #4043: Add restful API's as well for the same.

    • Priority: Not specified
    • Status: Open
    • Created: 28 days ago
    • Details: Suggestion to add a new entry, with a note encouraging opening a pull request instead.
  3. #4041: Public apis

    • Priority: Not specified
    • Status: Open
    • Created: 32 days ago
    • Details: General mention of public APIs without specific context.

Most Recently Updated Issues

  1. #4030: Add Weatherstack API

    • Priority: Not specified
    • Status: Open
    • Created: 41 days ago
    • Updated: 21 days ago
    • Details: Proposal to add Weatherstack API with detailed information and a Postman link.
  2. #4021: Coffee

    • Priority: Not specified
    • Status: Open
    • Created: 44 days ago
    • Updated: 22 days ago
    • Details: Includes comments about sharing and monetizing APIs.
  3. #4017: Organizing payment

    • Priority: Not specified
    • Status: Open
    • Created: 46 days ago
    • Updated: 42 days ago
    • Details: Discussion on organizing payment with comments about monetizing APIs.

The issues reflect ongoing maintenance challenges, such as keeping the list of APIs current and addressing security concerns related to compromised APIs. The community's active participation in reporting and suggesting improvements highlights the repository's collaborative nature but also underscores the need for vigilant oversight and timely updates.

Report On: Fetch pull requests



Analysis of Pull Requests for "public-apis" Repository

Open Pull Requests

  1. #4061: Add holidays.rest API to Calendar

    • State: Open
    • Created: 0 days ago
    • Details: This PR adds the holidays.rest API to the Calendar category. The submission is well-formatted and follows the contribution guidelines. It includes a useful description and a Postman button for easy testing. This PR appears ready for review and merging.
  2. #4059: Create hello change

    • State: Open
    • Created: 3 days ago
    • Details: This PR seems to be a test or placeholder, as it only adds a simple HTML file with "

      hello

      ". It does not adhere to the contribution guidelines and lacks a meaningful description or purpose. It might need closure or further clarification from the author.
  3. #4058: Update links.py

    • State: Open
    • Created: 4 days ago
    • Details: This PR updates a script file by adding a comment line "#Functions". It does not follow the contribution guidelines, and its purpose is unclear. It may require additional context or closure if deemed unnecessary.
  4. #4057: Updated a discontinued API to its successor

    • State: Open
    • Created: 6 days ago
    • Details: This PR updates an API link in the README to its successor due to the original API entering maintenance mode. The update is minor but necessary for maintaining accuracy in the repository.
  5. #4056: Added app.py file

    • State: Open
    • Created: 7 days ago
    • Details: The author explicitly states this is a test ("Ignore this, this is some kind of testing for PR"). It should likely be closed as it serves no functional purpose for the repository.
  6. #4055: Add weatherUSA API

    • State: Open
    • Created: 9 days ago
    • Details: This addition of the weatherUSA API to the Weather category follows all contribution guidelines and appears ready for review.
  7. #4053: Added Dragon Ball Api

    • State: Open
    • Created: 11 days ago
    • Details: This PR adds a new API related to the Dragon Ball series. It is well-documented and follows all guidelines, making it suitable for merging after review.
  8. #4051: Add Free Sitemaps API to Public APIs

    • State: Open
    • Created: 12 days ago
    • Details: Adds Free Sitemaps API under an appropriate category with detailed documentation and adherence to guidelines.
  9. #3886: added urldna.io API

    • State: Open
    • Created: 152 days ago, edited recently
    • Details: The author has requested updates on this long-standing open PR, indicating it might have been overlooked or needs further action from maintainers.

Notable Closed Pull Requests

  1. #4060: Main

    • Closed without merging
    • This PR was closed on the same day it was created, indicating it might have been erroneous or incomplete.
  2. #3928 & #4049 & #4040 & #4022 & #4003 & #3993 & #3990 & #3989 & #3982 & #3975 & #3974 & #3964 & #3954 & #3947 & #3945 & #3937 & #3936 & #3935 & #3933 & #3930 & #3880

    • These PRs were closed without merging, often due to being incomplete, duplicates, or not adhering to contribution guidelines.

Summary

The repository has several open pull requests that are either well-prepared for merging or require closure due to lack of adherence to guidelines or being tests/experiments. The maintainers should focus on reviewing recent submissions like #4061 and address older ones like #3886 that have been pending for extended periods. Additionally, many closed PRs indicate active curation by maintainers to keep the repository clean and relevant.

Report On: Fetch Files For Assessment



Source Code Assessment

File: CONTRIBUTING.md

Structure and Content

  • Purpose: Provides guidelines for contributing to the repository, emphasizing the non-commercial nature of the API list.
  • Clarity: The document is well-structured with clear sections on formatting, pull request guidelines, and pro tips for contributors.
  • Comprehensiveness: Covers essential aspects of contribution, including API entry format, pull request guidelines, and commit message standards.
  • Links: Contains helpful links to resources like branch creation, syncing a fork, and squashing commits.

Quality

  • Readability: The language is concise and easy to understand.
  • Consistency: Maintains a consistent tone throughout the document.
  • Completeness: Thoroughly addresses potential contributor questions and scenarios.

File: scripts/validate/format.py

Structure and Functionality

  • Purpose: Validates the format of API entries in the repository to ensure consistency and correctness.
  • Modularity: Functions are well-defined with specific responsibilities (e.g., check_alphabetical_order, check_entry).
  • Error Handling: Uses error messages to indicate specific issues with line numbers, aiding in debugging.
  • Type Annotations: Utilizes type hints for function parameters and return types, enhancing code readability.

Quality

  • Readability: Code is well-commented and follows PEP 8 style guidelines.
  • Efficiency: Regular expressions are used effectively for pattern matching.
  • Robustness: Handles various validation checks (e.g., alphabetical order, description length) comprehensively.

File: scripts/validate/links.py

Structure and Functionality

  • Purpose: Validates links in API entries to ensure they are active and correct.
  • Modularity: Functions like find_links_in_text and check_if_link_is_working are clearly defined.
  • Error Handling: Provides detailed error messages for different types of link validation failures (e.g., SSL errors, timeouts).

Quality

  • Readability: Code is clear and adheres to Python coding standards.
  • Efficiency: Uses regular expressions efficiently to extract links from text.
  • Robustness: Includes handling for various HTTP exceptions and Cloudflare protection detection.

File: scripts/tests/test_validate_format.py

Structure and Functionality

  • Purpose: Tests the functionality of the format validation script to ensure it works correctly.
  • Coverage: Comprehensive test cases covering different aspects of format validation (e.g., alphabetical order, title syntax).
  • Use of unittest: Utilizes Python's unittest framework effectively for structured testing.

Quality

  • Readability: Test cases are well-named, indicating their purpose clearly.
  • Completeness: Covers a wide range of scenarios, ensuring robustness of the validation script.
  • Maintainability: Test structure allows easy addition of new test cases if needed.

File: scripts/tests/test_validate_links.py

Structure and Functionality

  • Purpose: Tests the functionality of the link validation script to ensure it works correctly.
  • Coverage: Includes tests for link extraction, duplicate detection, user agent generation, and Cloudflare protection detection.
  • Use of unittest: Employs Python's unittest framework effectively for organized testing.

Quality

  • Readability: Test cases are descriptive and follow a logical structure.
  • Completeness: Adequately tests various components of link validation, ensuring comprehensive coverage.
  • Maintainability: Allows for straightforward updates or additions to test cases as needed.

Overall, the source code files demonstrate a high level of quality in terms of structure, readability, and functionality. The use of Python's standard libraries and best practices ensures that the scripts are efficient and maintainable. The tests provide thorough coverage, contributing to the reliability of the repository's validation processes.

Report On: Fetch commits



Development Team and Recent Activity

Team Members and Activities

  1. APILayer (apilayer-admin)

    • Recent activities include updating the README.md file multiple times over the past several months, with the most recent update occurring 25 days ago.
    • Collaborated with Kyle Calica on a merge request to add postman logos, remove dead links, and create popular APIs and categories sections about 210 days ago.
  2. Kyle Calica (stcalica)

    • Contributed to adding postman logos, removing dead links, and creating popular APIs and categories sections about 257 days ago.
  3. Matheus Felipe (matheusfelipeog)

    • Involved in various activities such as removing broken APIs, updating links, adding new APIs, and improving scripts. Notably active around 989 to 1022 days ago.
    • Worked on issues like resolving broken links and adding new features to the repository.
  4. Zaldy Pagaduan Jr. (zopagaduanjr)

    • Added PRC Exam Schedule to Government category about 985 days ago.
  5. FayeNichols

    • Added Hirak OCR to Text Analysis and Hirak IP to Country to Geocoding categories around 985 to 986 days ago.
  6. Diego Parrilla (diegoparrilla)

    • Added Threat Jammer to Security category about 989 days ago.
  7. Yann Bertrand (yannbertrand)

    • Reverted several commits related to README.md updates and file uploads around 990 days ago.
    • Added dark mode m3o logo and other sponsor-related updates around 1027 to 1028 days ago.
  8. Arne Stittrich (Stitti)

    • Added MFaaS to Video category about 989 days ago.
  9. S.G. Sudhakar (sudhakar76)

    • Added WhatJobs to Jobs category about 989 days ago.
  10. Avi Mamenko (amamenko)

    • Added Owen Wilson Wow API to Video category about 992 days ago.
  11. Roanna Victorio (roannav)

    • Added National Park Service API to Government category about 995 days ago.
  12. Agrim Prasad (AgrimPrasad)

    • Added Lecto Translation to Text Analysis category about 995 days ago.
  13. caroline (caroldinh)

    • Added Website Carbon to Environment category about 996 days ago.
  14. PerryPal (PerryPal21)

    • Added Techy to Entertainment category about 996 days ago.
  15. Savičs (Exerra)

    • Added NoPhishy to Anti-Malware category about 997 days ago.
  16. Gregory Saint-Jean (GregSaintJean)

    • Documented deprecation of Indeed API in Jobs category about 999 days ago.
  17. adamclement-exe

    • Added rock paper scissors API with 101 objects about 1013 days ago.
  18. bluatista

    • Added xeno-canto API to Animals category about 1014 days ago.
  19. Hubert Morawski (Morasiu)

    • Added Wizard World to Books category about 1015 days ago.
  20. Troki (Vojkan94)

    • Added Apiip API to Geocoding category about 1017 days ago.
  21. Alex A (xmakina)

    • Moved SLF from Games & Comics to Geocoding category about 1020 days ago.
  22. sastofficial

    • Added GDBrowser API about 1020 days ago.
  23. William Faircloth

    • Added OceanFacts to Math & Science category about 1028 days ago.
  24. Daniel Buckle (bokklu)

    • Added ProxyKingdom API to Development category about 1028 days ago.
  25. Jeroen Claassens (favna)

    • Added GraphQL Pokemon API about 1031 days ago.
  26. speedyshreya

    • Fixed missing whitespace in documentation about 1033 days ago.

Patterns, Themes, and Conclusions

  • The repository is primarily maintained by APILayer with contributions from various community members.
  • Recent activities have focused on updating documentation, adding new APIs across different categories, and maintaining the quality of existing entries by removing broken links or deprecated APIs.
  • There is a collaborative effort among contributors, with some members focusing on specific areas such as security, video, text analysis, etc.
  • The development team appears active in maintaining the repository's relevance by frequently updating content and addressing issues as they arise.
  • The repository serves as a comprehensive resource for developers seeking free APIs across a wide range of domains, indicating its importance in the developer community.