Python SDK for Reportify API - Financial data and document search
Project description
Reportify SDK for Python
Python SDK for Reportify API - Financial data and document search.
Installation
pip install reportify-sdk
Quick Start
from reportify_sdk import Reportify
# Initialize client
client = Reportify(api_key="your-api-key")
# Search documents
docs = client.search("Tesla earnings", num=10)
for doc in docs:
print(doc["title"])
Features
Document Search
# General search across all categories
docs = client.search("revenue growth", num=10)
# Search specific document types
news = client.search_news("Apple iPhone", num=10)
reports = client.search_reports("semiconductor analysis", num=10)
filings = client.search_filings("10-K annual report", symbols=["US:AAPL"])
transcripts = client.search_transcripts("guidance", symbols=["US:TSLA"])
Stock Data (returns pandas DataFrame)
# Financial statements
income = client.stock.income_statement("US:AAPL", period="quarterly")
balance = client.stock.balance_sheet("US:AAPL")
cashflow = client.stock.cashflow_statement("US:AAPL")
# Price data
prices = client.stock.prices("US:AAPL", start_date="2024-01-01")
# Real-time quote
quote = client.stock.quote("US:AAPL")
# Company info
overview = client.stock.overview("US:AAPL")
shareholders = client.stock.shareholders("US:AAPL")
# Screening and calendar
stocks = client.stock.screener(country="US", market_cap_more_than=1e10)
earnings = client.stock.earnings_calendar(market="us", start_date="2024-01-01", end_date="2024-01-31")
Timeline
# Get timeline for followed entities
companies = client.timeline.companies(num=20)
topics = client.timeline.topics(num=20)
institutes = client.timeline.institutes(num=20)
public_media = client.timeline.public_media(num=20)
social_media = client.timeline.social_media(num=20)
Knowledge Base
# Search user's uploaded documents
chunks = client.kb.search("quarterly revenue", folder_ids=["folder_id"])
Documents
# Get document content
doc = client.docs.get("doc_id")
summary = client.docs.summary("doc_id")
# List and search documents
docs = client.docs.list(symbols=["US:AAPL"], page_size=10)
chunks = client.docs.search_chunks("revenue breakdown", num=5)
# Upload documents
result = client.docs.upload([
{"url": "https://example.com/report.pdf", "name": "Annual Report"}
])
Quant (Quantitative Analysis)
# Compute technical indicators
df = client.quant.compute_indicators(["000001"], "RSI(14)")
df = client.quant.compute_indicators(["000001"], "MACD()")
# Screen stocks by formula
stocks = client.quant.screen(formula="RSI(14) < 30")
stocks = client.quant.screen(formula="CROSS(MA(5), MA(20))")
# Get OHLCV data
ohlcv = client.quant.ohlcv("000001", start_date="2024-01-01")
ohlcv_batch = client.quant.ohlcv_batch(["000001", "600519"])
# Backtest strategy
result = client.quant.backtest(
start_date="2023-01-01",
end_date="2024-01-01",
symbol="000001",
entry_formula="CROSS(MA(5), MA(20))",
exit_formula="CROSSDOWN(MA(5), MA(20))"
)
print(f"Total Return: {result['total_return_pct']:.2%}")
Concepts
# Get latest concepts
concepts = client.concepts.latest()
for c in concepts:
print(c["concept_name"])
# Get today's concept feeds
feeds = client.concepts.today()
Channels
# Search channels
result = client.channels.search("Goldman Sachs")
# Get followed channels
followings = client.channels.followings()
# Follow/unfollow a channel
client.channels.follow("channel_id")
client.channels.unfollow("channel_id")
Chat
# Chat completion based on documents
response = client.chat.completion(
"What are Tesla's revenue projections?",
symbols=["US:TSLA"],
mode="comprehensive" # concise, comprehensive, deepresearch
)
print(response["message"])
Agent
# Create agent conversation
conv = client.agent.create_conversation(agent_id=11887655289749510)
# Chat with agent
response = client.agent.chat(
conversation_id=conv["id"],
message="Analyze NVIDIA's latest earnings"
)
# Get agent-generated file
file_content = client.agent.get_file("file_id")
with open("output.xlsx", "wb") as f:
f.write(file_content)
User
# Get followed companies
companies = client.user.followed_companies()
for company in companies:
print(f"{company['symbol']}: {company['name']}")
Error Handling
from reportify_sdk import (
Reportify,
AuthenticationError,
RateLimitError,
NotFoundError,
APIError,
)
try:
docs = client.search("Tesla")
except AuthenticationError:
print("Invalid API key")
except RateLimitError:
print("Rate limit exceeded, please wait")
except NotFoundError:
print("Resource not found")
except APIError as e:
print(f"API error: {e.message}")
Configuration
client = Reportify(
api_key="your-api-key",
base_url="https://api.reportify.cn", # Optional: custom API URL
timeout=30.0, # Optional: request timeout in seconds
)
Context Manager
with Reportify(api_key="your-api-key") as client:
docs = client.search("Tesla")
# Client will be closed automatically
License
MIT License - see LICENSE for details.
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
reportify_sdk-0.3.3.tar.gz
(22.7 kB
view details)
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 reportify_sdk-0.3.3.tar.gz.
File metadata
- Download URL: reportify_sdk-0.3.3.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec53c2a2f023379bc9c9cdd1af6f429c2c7c0598cb0d73949521168d4f92e843
|
|
| MD5 |
8e4f51a7ae885c31c4ec5eee259e3e8c
|
|
| BLAKE2b-256 |
981ef451c1eaa1a52974e9c118b1a066fee68f3132b7e19592158cedfcff67dc
|
File details
Details for the file reportify_sdk-0.3.3-py3-none-any.whl.
File metadata
- Download URL: reportify_sdk-0.3.3-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4627f82b5372c22c92044343b0a6aa944a8976b436e7115037c25bf6cce037d5
|
|
| MD5 |
87dde21e38b0dee4626472714c1e6e60
|
|
| BLAKE2b-256 |
db53f581aaa309708042be48b3fb8a510948465d8bb9efa222ae63e43cd5a2d8
|