Skip to main content

API Reference

v1.0

Integrate ValueMarkers scores, quality checks, and screening into your workflow. Pull our analysis into your models, dashboards, or client reports.

API access is available on Professional and Team plans. All responses are JSON.

BASE URLhttps://api.valuemarkers.com/api/v1
Get API Key

Authentication

Every request requires an Authorization header with a Bearer token. API keys use the vmk_ prefix.

Generate keys from Settings > API Keys in your dashboard. Each account can have up to 5 active keys. Keys can be revoked at any time.

curl
curl -X GET "https://api.valuemarkers.com/api/v1/stock/AAPL" \
  -H "Authorization: Bearer vmk_your_api_key"
401Unauthorized

Returned when the Authorization header is missing or the API key is invalid. Check that your key starts with vmk_.

403Forbidden

Returned when your plan does not include API access. API is available on Professional and Team plans.

What the API provides

The ValueMarkers API gives you programmatic access to our analysis - composite scores, quality checks, valuation estimates, and screening results. It's designed for investment professionals who want to integrate our insights into their existing tools and workflows.

Included

  • VM Score + 5-pillar breakdown per stock
  • Quality checks (Piotroski, Altman, Beneish)
  • Key valuation metrics + DCF estimate
  • Multi-factor screening (73 exchanges)
  • Leaderboard rankings
  • Watchlist export with scores

Use the platform for

  • Full 120-indicator deep dives
  • Advanced AND/OR screener logic
  • AI-powered stock analysis
  • Natural language screening
  • Interactive DCF calculator
  • Guru & insider tracking

Stock Profile

Get our composite analysis for any stock. Returns our scores, quality checks, and key valuation metrics - not raw financial data.

Look up stocks by ticker symbol or company name.

Screener

Find stocks matching your criteria across 73 exchanges. Filter by our scores and key metrics.

Leaderboard

See the highest-ranked stocks by our composite VM Score.

Watchlist Export

Export your watchlists with current scores and metrics. Useful for syncing with external tools.

Response Format

All responses return JSON with a consistent envelope. The top-level object always contains a data field and a meta field.

Standard Response

json
{
  "data": "{ ... }",
  "meta": {
    "timestamp": "2026-03-09T14:32:00Z",
    "version": "v1.0"
  }
}

Paginated Response

json
{
  "data": [
    "{ ... }"
  ],
  "meta": {
    "timestamp": "2026-03-09T14:32:00Z",
    "version": "v1.0",
    "pagination": {
      "total": 47,
      "offset": 0,
      "limit": 25
    }
  }
}

Rate Limits

Rate limits are enforced per API key. Every response includes rate limit headers.

PlanMonthly RequestsRate Limit
Professional10,000/month50 rpm
Team 550,000/month200 rpm
Team 10100,000/month300 rpm
EnterpriseCustomCustom

Rate Limit Headers

X-RateLimit-Limit

Monthly request quota.

X-RateLimit-Remaining

Requests remaining.

X-RateLimit-Reset

UTC timestamp when the window resets.

Error Codes

The API uses standard HTTP status codes. Error responses include a JSON body with a human-readable message.

CodeStatusDescription
200OKRequest succeeded.
400Bad RequestMissing or malformed request parameters.
401UnauthorizedAPI key is missing or invalid.
403ForbiddenYour plan does not include access to this endpoint.
404Not FoundThe requested ticker or resource does not exist.
422UnprocessableParameters are well-formed but semantically invalid (e.g. min_score=200).
429Too Many RequestsRate limit exceeded. Back off and retry after X-RateLimit-Reset.
500Server ErrorSomething went wrong on our end. If it persists, contact support.

Code Examples

Working examples in Python, JavaScript, and cURL. Replace vmk_your_api_key with your actual key.

python
import requests

API_KEY = "vmk_your_api_key"
BASE = "https://api.valuemarkers.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}

# Get a stock's ValueMarkers analysis
stock = requests.get(f"{BASE}/stock/AAPL", headers=headers).json()["data"]
print(f"{stock['name']}")
print(f"  VM Score: {stock['scores']['vm_score']}/100")
print(f"  Piotroski: {stock['quality_checks']['piotroski_f_score']}/9")
print(f"  DCF Value: $" + str(stock['valuation']['dcf_value']))
print(f"  Margin of Safety: {stock['valuation']['margin_of_safety']}%")

# Screen for high-quality undervalued stocks
params = {"min_score": 70, "max_pe": 20, "min_piotroski": 7, "limit": 10}
results = requests.get(f"{BASE}/screener", headers=headers, params=params).json()
for s in results["data"]:
    print(f"  {s['ticker']:6s} VM: {s['vm_score']}  MoS: {s['margin_of_safety']}%")

Changelog

v1.0March 2026Current
  • Initial public release.
  • Stock profiles with composite scores and quality checks.
  • Multi-factor screener across 73 exchanges.
  • Leaderboard endpoint.
  • Search and watchlist export.

Ready to integrate?

API access starts on the Professional plan ($99/mo). Team plans include higher rate limits and shared workspaces.

Weekly Stock Analysis - Free

5 undervalued stocks, fully modeled. Every Monday. No spam.

Cookie Preferences

We use cookies to analyze site usage and improve your experience. You can accept all, reject all, or customize your preferences.