A powerful API that aggregates financial news and provides comprehensive market sentiment analysis
Project description
Finance News API
A powerful API that aggregates financial news and provides comprehensive market sentiment analysis.
Features
-
๐ Comprehensive Data Sources
- Yahoo Finance - Real-time market data and news
- Reuters - Global financial news and analysis
- Bloomberg - Market insights and breaking news
- MarketWatch - Financial news and market commentary
- Seeking Alpha - In-depth analysis and research
- Company information and fundamentals
- Market metrics and analyst recommendations
-
๐ Advanced Analytics
- Sentiment analysis with granular classification
- Subjectivity analysis
- Time-based sentiment trends
- Market sentiment aggregation
- Multi-source news comparison and analysis
- Source-specific sentiment tracking
-
๐ Market Data
- Real-time and historical price data
- Volume analysis
- Key market metrics (P/E ratio, market cap, etc.)
- Analyst recommendations
- Company fundamentals
-
โก Performance Features
- Async processing
- Input validation
- Comprehensive error handling
- Flexible filtering options
- Customizable news sources
Getting Started
Prerequisites
- Python 3.8+
- pip (Python package manager)
Installation
- Clone the repository:
git clone https://github.com/yourusername/finance-news-api.git
cd finance-news-api
- Install dependencies:
pip install -r requirements.txt
- Set up environment variables:
# Create a .env file
touch .env
# Add the following to your .env file
ADMIN_USERNAME=your_admin_username
ADMIN_PASSWORD=your_secure_password
- Run the application:
uvicorn main:app --reload
The API will be available at http://localhost:8000
API Key Management
The API includes a built-in admin interface for managing API keys. Access it at http://localhost:8000/admin
Security
- Admin interface is protected with HTTP Basic Authentication
- Admin credentials are configured via environment variables
- All admin actions require authentication
- API keys are securely generated and stored
Features
- Create new users and generate API keys
- View all existing users and their API keys
- Delete users and their API keys
- Copy API keys to clipboard
Using the Admin Interface
- Open
http://localhost:8000/adminin your browser - Enter your admin credentials when prompted
- Use the form to create new users
- View and manage existing users in the table
- Copy API keys using the "Copy" button
- Delete users using the "Delete" button
API Usage
Authentication
All endpoints require API key authentication. Include your API key in the X-API-Key header:
import requests
headers = {
"X-API-Key": "your_api_key_here"
}
response = requests.get("http://localhost:8000/api/news/AAPL", headers=headers)
Example Endpoints
Get News for a Stock
response = requests.get(
"http://localhost:8000/api/news/AAPL",
params={
"sentiment_threshold": 0.2,
"time_range_hours": 24,
"sources": ["reuters", "bloomberg"]
},
headers=headers
)
Documentation
- API Documentation:
/docs(Swagger UI) - ReDoc Documentation:
/redoc - Full API Documentation: API.md
Development
Running Tests
pytest
Code Style
The project follows PEP 8 style guidelines. To check your code:
flake8 .
Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
Project Structure
finance-news-api/
โโโ main.py # FastAPI application entry point
โโโ routers/ # API route handlers
โ โโโ news.py # News endpoints
โ โโโ users.py # User registration
โ โโโ admin.py # Admin interface
โโโ services/ # Business logic
โ โโโ yahoo.py # Yahoo Finance integration
โ โโโ news_sources.py # News source integrations
โ โโโ sentiment.py # Sentiment analysis
โ โโโ google.py # Google News integration
โโโ templates/ # HTML templates
โ โโโ admin.html # Admin interface template
โโโ middleware/ # Middleware components
โ โโโ admin_auth.py # Admin authentication
โโโ database.py # Database configuration
โโโ models.py # SQLAlchemy models
โโโ schemas.py # Pydantic models
โโโ auth.py # API key authentication
โโโ tests/ # Test files
โโโ .env # Environment variables
โโโ requirements.txt # Project dependencies
โโโ API.md # API documentation
โโโ README.md # Project documentation
Dependencies
- FastAPI - Web framework
- Uvicorn - ASGI server
- YFinance - Yahoo Finance API
- TextBlob - Sentiment analysis
- BeautifulSoup4 - Web scraping
- Feedparser - RSS feed parsing
- Playwright - Browser automation
- Python-dotenv - Environment management
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Support
For support or to request a new API key, please contact:
- Email: pratyushkhanal95@gmail.com
- GitHub: https://github.com/pratyushkhanal
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file finance_news_api-1.0.1-py3-none-any.whl.
File metadata
- Download URL: finance_news_api-1.0.1-py3-none-any.whl
- Upload date:
- Size: 139.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b031f1b454db2a47e94f464e493a0a823849be33619db6d203beb18793d20dae
|
|
| MD5 |
a4bfe98b083ca6680c4e8fc5a37f09e8
|
|
| BLAKE2b-256 |
8b270ba7528e47f99f5cffeba458803b56864b0fddc7c03dba3fba6328f3ae1b
|