Skip to content

No Authentication Required

One of the most remarkable aspects of the Danish Parliament API is that it requires zero authentication. This reflects Denmark's commitment to government transparency and open data.

What This Means

✅ No Setup Required

  • No API key registration
  • No OAuth flows
  • No tokens to manage
  • No authentication headers
  • No rate limiting by user

✅ Immediate Access

# This works immediately, no setup needed
curl "https://oda.ft.dk/api/Sag?%24top=5"

✅ Universal Access

  • Available to anyone, anywhere
  • No geographic restrictions
  • No account requirements
  • No payment needed

Global Context

This level of openness is extremely rare for government APIs worldwide:

Country Parliament API Authentication Public Access
<é<ð Denmark oda.ft.dk None Full
<ú<ø USA congress.gov API Key Limited
<ì<ç UK parliament.uk API Key Limited
<é<ê Germany bundestag.de Registration Restricted
<ë<÷ France assemblee-nationale.fr Variable Partial

Why No Authentication?

The Danish Access to Public Administration Files Act (Offentlighedsloven) establishes the principle that government information should be freely accessible to the public.

Democratic Transparency

  • Parliamentary proceedings are public by nature
  • Citizens have a right to know how they're being governed
  • Transparency reduces barriers to civic engagement

Technical Philosophy

  • Removes friction for researchers, journalists, and developers
  • Enables real-time monitoring of government activities
  • Supports innovation in civic technology

What Data is Available

Since there's no authentication, all data is considered public:

✅ Included (Public Information)

  • Parliamentary cases and their status
  • Voting records and results
  • Committee meetings and agendas
  • Public documents and files
  • Politician biographical information
  • Meeting transcripts and debates

L Not Included (Private Information)

  • Personal contact information beyond public roles
  • Internal deliberations not made public
  • Draft documents not yet released
  • Personal communications between officials

Security Considerations

For API Users

  • No secrets to protect - No API keys to keep secure
  • No quota management - No risk of hitting rate limits due to shared keys
  • Simple deployment - Can be used in client-side applications

For the API Provider

  • Reduced infrastructure complexity - No authentication system to maintain
  • Lower support burden - No password resets or key management
  • Broader adoption - Lower barriers increase usage

Best Practices

Even though authentication isn't required, follow these practices:

1. Be Respectful

import time

# Add small delays between requests
for page in range(10):
    response = requests.get(f"https://oda.ft.dk/api/Sag?%24skip={page*100}&%24top=100")
    time.sleep(0.1)  # 100ms delay

2. Use Efficient Queries

# Good: Request only what you need
curl "https://oda.ft.dk/api/Sag?%24select=id,titel&%24top=100"

# Avoid: Requesting everything unnecessarily
curl "https://oda.ft.dk/api/Sag?%24expand=*&%24top=1000"

3. Cache Appropriately

# Use timestamps to avoid redundant requests
last_update = "2025-09-09T17:00:00"
url = f"https://oda.ft.dk/api/Sag?%24filter=opdateringsdato%20gt%20datetime'{last_update}'"

4. Handle Errors Gracefully

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

session = requests.Session()
retry = Retry(total=3, backoff_factor=1)
adapter = HTTPAdapter(max_retries=retry)
session.mount('https://', adapter)

Implications for Development

Client-Side Applications

Since no authentication is required, you can use the API directly from browsers:

// Works directly in web browsers
fetch('https://oda.ft.dk/api/Sag?%24top=5')
  .then(response => response.json())
  .then(data => console.log(data));

Mobile Applications

No need for server-side proxies:

// iOS Swift - direct API access
let url = URL(string: "https://oda.ft.dk/api/Sag?%24top=5")!
URLSession.shared.dataTask(with: url) { data, response, error in
    // Handle response
}.resume()

Academic Research

Perfect for research environments: - No institutional barriers - No procurement processes for API access - Students can access immediately - Reproducible research without authentication dependencies

Data Attribution

While no authentication is required, proper attribution is appreciated:

Data source: Folketinget Open Data API (oda.ft.dk)
Accessed: [Date]

In Academic Papers

Danish parliamentary data was accessed through the Folketinget Open Data API 
(https://oda.ft.dk/) on [date]. The API provides unrestricted access to 
parliamentary proceedings, voting records, and legislative documents.

Rate Limiting

While there's no authentication-based rate limiting, be mindful:

Server-Side Limits

  • The API may have general rate limits
  • Large bulk requests might be throttled
  • Respectful usage ensures continued access for everyone
import requests
import time

class RespectfulAPIClient:
    def __init__(self, delay=0.1):
        self.delay = delay
        self.session = requests.Session()

    def get(self, url):
        response = self.session.get(url)
        time.sleep(self.delay)  # Be respectful
        return response

Monitoring and Analytics

Without authentication, the API provider can't track individual usage, but they may monitor:

  • Total request volume
  • Popular endpoints
  • Geographic distribution
  • Common query patterns

Your usage contributes to demonstrating the value of open government data.

International Impact

The Danish Parliament API's open access model has influenced:

  • Other Nordic countries' transparency initiatives
  • EU digital government strategies
  • Open government data advocacy worldwide
  • Academic research into government transparency

Terms of Service

  • Available at: http://www.ft.dk/dokumenter/aabne_data
  • Generally permissive for legitimate uses
  • No restrictions on commercial use
  • No requirements for prior approval

GDPR Compliance

Despite being open: - Data is limited to public information - Personal data is limited to public roles - Lawful basis: Public task (Article 6(1)(e) GDPR) - No special category data included

The Danish Parliament API's authentication-free approach represents a gold standard for government transparency and serves as a model for how public institutions can embrace radical openness while maintaining appropriate privacy protections.