This project explores an autocomplete API running at http://35.200.185.69::8000 to extract all possible names available through its system. Since no official documentation is provided, the API's behavior, constraints, and potential limitations are discovered through systematic testing and analysis.
-
API Exploration
- Initial requests were made to
/v1/autocomplete?query=<string>to understand response format and behavior. - Observed how query variations affect responses (e.g., single characters, partial words).
- Initial requests were made to
-
Building the Extraction Strategy
- Implemented an incremental querying approach using prefixes.
- Used recursive or breadth-first search techniques to traverse name possibilities.
-
Handling Constraints
- Investigated rate limiting (if any) by analyzing response codes and delays.
- Optimized request patterns to minimize redundant queries.
-
Data Collection & Storage
- Stored retrieved names systematically to avoid duplication.
- Ensured completeness by checking response consistency across different queries.
- Language: Python
- Libraries Used:
requests,json,time - Methodology: Prefix-based querying, adaptive request scheduling
- API accepts queries via
/v1/autocomplete?query=<string>. - API accepts queries via
/v2/autocomplete?query=<string>. - API accepts queries via
/v3/autocomplete?query=<string>. - Responses contain a list of suggested names based on the provided prefix.
- Potential rate limits may apply (to be confirmed during testing).
- Rate Limiting: Introduced adaptive delays and caching to reduce redundant requests.
- Efficient Traversal: Used a structured approach to systematically explore all name possibilities.
- Total Requests Made: (To be determined after full execution)
- Total Unique Names Extracted: (To be determined)
extractor.py- Main script to extract names from the API.results.json- Extracted names stored in JSON format.exploration_notes.md- Findings from API exploration.README.md- This documentation.