Official Python SDK for OilPriceAPI - Real-time and historical oil prices
Project description
OilPriceAPI Python SDK
The official Python SDK for OilPriceAPI - Real-time and historical oil prices for Brent Crude, WTI, Natural Gas, and more.
🚀 Quick Start
Installation
pip install oilpriceapi
Basic Usage
from oilpriceapi import OilPriceAPI
# Initialize client (uses OILPRICEAPI_KEY env var by default)
client = OilPriceAPI()
# Get latest Brent Crude price
brent = client.prices.get("BRENT_CRUDE_USD")
print(f"Brent Crude: ${brent.value:.2f}")
# Output: Brent Crude: $71.45
# Get multiple prices
prices = client.prices.get_multiple(["BRENT_CRUDE_USD", "WTI_USD", "NATURAL_GAS_USD"])
for price in prices:
print(f"{price.commodity}: ${price.value:.2f}")
Historical Data with Pandas
# Get historical data as DataFrame
df = client.prices.to_dataframe(
commodity="BRENT_CRUDE_USD",
start="2024-01-01",
end="2024-12-31",
interval="daily"
)
# Add technical indicators
df = client.analysis.with_indicators(
df,
indicators=["sma_20", "sma_50", "rsi", "bollinger_bands"]
)
# Calculate spread between Brent and WTI
spread = client.analysis.spread("BRENT_CRUDE_USD", "WTI_USD", start="2024-01-01")
📊 Features
- ✅ Simple API - Intuitive methods for all endpoints
- ✅ Type Safe - Full type hints for IDE autocomplete
- ✅ Pandas Integration - First-class DataFrame support
- ✅ Async Support - High-performance async client
- ✅ Smart Caching - Reduce API calls automatically
- ✅ Rate Limit Handling - Automatic retries with backoff
- ✅ Technical Indicators - Built-in SMA, RSI, MACD, etc.
- ✅ CLI Tool - Command-line interface included
📚 Documentation
Authentication
# Method 1: Environment variable (recommended)
export OILPRICEAPI_KEY="your_api_key"
client = OilPriceAPI()
# Method 2: Direct initialization
client = OilPriceAPI(api_key="your_api_key")
# Method 3: With configuration
client = OilPriceAPI(
api_key="your_api_key",
timeout=30,
max_retries=3,
cache="memory",
cache_ttl=300
)
Available Commodities
BRENT_CRUDE_USD- Brent Crude OilWTI_USD- West Texas IntermediateNATURAL_GAS_USD- Natural GasDIESEL_USD- DieselGASOLINE_USD- GasolineHEATING_OIL_USD- Heating Oil- View all commodities
Error Handling
from oilpriceapi.exceptions import OilPriceAPIError, RateLimitError, DataNotFoundError
try:
price = client.prices.get("INVALID_CODE")
except DataNotFoundError as e:
print(f"Commodity not found: {e}")
except RateLimitError as e:
print(f"Rate limited. Resets in {e.seconds_until_reset}s")
except OilPriceAPIError as e:
print(f"API error: {e}")
⚡ Async Support
import asyncio
from oilpriceapi import AsyncOilPriceAPI
async def get_prices():
async with AsyncOilPriceAPI() as client:
prices = await asyncio.gather(
client.prices.get("BRENT_CRUDE_USD"),
client.prices.get("WTI_USD"),
client.prices.get("NATURAL_GAS_USD")
)
return prices
# Run async function
prices = asyncio.run(get_prices())
🛠️ CLI Tool
# Get current price
oilprice get BRENT_CRUDE_USD
# Export historical data
oilprice export WTI_USD --start 2024-01-01 --format csv -o wti_2024.csv
# Watch prices in real-time
oilprice watch BRENT_CRUDE_USD --interval 60
🧪 Testing
The SDK includes utilities for testing your applications:
from oilpriceapi.testing import MockClient
def test_my_strategy():
client = MockClient()
client.set_price("BRENT_CRUDE_USD", 75.50)
result = my_trading_strategy(client)
assert result.action == "BUY"
📈 Examples
Check out the examples/ directory for:
🔧 Development
# Clone repository
git clone https://github.com/oilpriceapi/python-sdk
cd python-sdk
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
# Type checking
mypy oilpriceapi
📝 License
MIT License - see LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please see our Contributing Guide for details.
💬 Support
- 📧 Email: support@oilpriceapi.com
- 🐛 Issues: GitHub Issues
- 📖 Docs: Documentation
🔗 Links
Made with ❤️ by the OilPriceAPI Team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 oilpriceapi-1.0.0.tar.gz.
File metadata
- Download URL: oilpriceapi-1.0.0.tar.gz
- Upload date:
- Size: 25.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90bbfd7099e32a8a4f96f1000790f6e4644f957468fe5d1ba19c36b4557bd11a
|
|
| MD5 |
bc626e12255ac2d4dfac1b8b600d0f27
|
|
| BLAKE2b-256 |
dc457283c8618e9314582a93f81e0601e44c51854360ee1aaf4822a911c69cac
|
File details
Details for the file oilpriceapi-1.0.0-py3-none-any.whl.
File metadata
- Download URL: oilpriceapi-1.0.0-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a378fc7faed9b23fc5faac32dc2b2ce676f5d3f362e9c9da7a9a169f8d4491e
|
|
| MD5 |
e0cc0edbe4d72f2a40db8ee448705931
|
|
| BLAKE2b-256 |
164e94f0f5706cd4bc52a1b0df233338dfccf826c0d7c214489fafcb93840271
|