← 返回首页

API 接口文档

版本 1.0 · 更新时间:2025-10-31

状态:🟢 正常运行

🎯 API 概述

关于本 API

彩票开奖数据 API 提供全面的彩票开奖信息查询服务,覆盖 179 个主流彩种,数据每分钟自动更新。 所有接口均采用 RESTful 设计规范,返回标准 JSON 格式数据。

基础信息

基础 URLhttps://lottery.langne.com
协议HTTPS (TLS 1.2+)
数据格式JSON
字符编码UTF-8

服务特性

认证方式无需认证
访问限制无限制
CORS 支持✅ 完全支持
更新频率每分钟

🔐 认证与授权

🎉 完全开放,无需认证

本 API 完全免费开放,无需注册账号,无需申请 API Key,无需任何认证流程。 您可以直接在客户端代码中调用 API,支持跨域请求(CORS)。

📋 API 端点

获取彩种列表

GET
GET /api/lottery-types

获取系统支持的所有彩种列表,包括彩种代码、名称、类型等基本信息。

请求参数(Query Parameters)

参数名类型必填默认值说明
activebooleantrue是否只返回活跃彩种
typestring-按类型筛选(standard/vietnamese/blockchain等)

请求示例

获取所有活跃彩种:

curl -X GET "https://lottery.langne.com/api/lottery-types?active=true" \
  -H "Accept: application/json"

获取特定类型的彩种:

curl -X GET "https://lottery.langne.com/api/lottery-types?type=vietnamese" \
  -H "Accept: application/json"

响应示例(200 OK)

{
  "success": true,
  "data": [
    {
      "lottery_code": "CQSSC",
      "lottery_name": "重庆时时彩",
      "lottery_type": "standard",
      "is_active": true,
      "created_at": "2025-01-01T00:00:00Z",
      "updated_at": "2025-10-31T12:00:00Z"
    },
    {
      "lottery_code": "HNFC",
      "lottery_name": "河内五分彩",
      "lottery_type": "vietnamese",
      "is_active": true,
      "created_at": "2025-01-01T00:00:00Z",
      "updated_at": "2025-10-31T12:00:00Z"
    }
  ],
  "total": 179,
  "timestamp": "2025-10-31T14:30:00Z"
}

响应字段说明

字段名类型说明
successboolean请求是否成功
dataarray彩种数据数组
data[].lottery_codestring彩种唯一标识代码
data[].lottery_namestring彩种中文名称
data[].lottery_typestring彩种类型(standard/vietnamese/blockchain等)
totalnumber总彩种数量

获取开奖结果

核心接口
GET
GET /api/lottery-results

获取指定彩种的历史开奖记录,支持分页查询和日期筛选。此接口已进行 S 级性能优化,响应时间 < 100ms。

请求参数(Query Parameters)

参数名类型必填默认值说明
lottery_codestring-彩种代码(如:CQSSC)
pageinteger1页码,从 1 开始
limitinteger20每页条数,范围:1-100
datestring-日期筛选,格式:YYYY-MM-DD
start_datestring-开始日期,格式:YYYY-MM-DD
end_datestring-结束日期,格式:YYYY-MM-DD

请求示例

基础查询(获取重庆时时彩最新 20 条):

curl -X GET "https://lottery.langne.com/api/lottery-results?lottery_code=CQSSC" \
  -H "Accept: application/json"

分页查询(第 2 页,每页 50 条):

curl -X GET "https://lottery.langne.com/api/lottery-results?lottery_code=CQSSC&page=2&limit=50" \
  -H "Accept: application/json"

日期筛选(获取指定日期的数据):

curl -X GET "https://lottery.langne.com/api/lottery-results?lottery_code=CQSSC&date=2025-10-31" \
  -H "Accept: application/json"

日期范围查询:

curl -X GET "https://lottery.langne.com/api/lottery-results?lottery_code=CQSSC&start_date=2025-10-01&end_date=2025-10-31" \
  -H "Accept: application/json"

响应示例(200 OK)

{
  "success": true,
  "data": [
    {
      "id": 123456,
      "lottery_code": "CQSSC",
      "issue": "20251031-100",
      "official_issue": "20251031100",
      "open_date": "2025-10-31 22:30:00",
      "code": "1,2,3,4,5",
      "created_at": "2025-10-31T22:30:05Z",
      "updated_at": "2025-10-31T22:30:05Z"
    },
    {
      "id": 123455,
      "lottery_code": "CQSSC",
      "issue": "20251031-099",
      "official_issue": "20251031099",
      "open_date": "2025-10-31 22:20:00",
      "code": "5,4,3,2,1",
      "created_at": "2025-10-31T22:20:05Z",
      "updated_at": "2025-10-31T22:20:05Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1000,
    "totalPages": 50
  },
  "performance": {
    "query_time_ms": 45
  },
  "timestamp": "2025-10-31T22:35:00Z"
}

响应字段说明

字段名类型说明
data[].idinteger记录唯一 ID
data[].lottery_codestring彩种代码
data[].issuestring期号(统一格式)
data[].official_issuestring官方期号(原始格式)
data[].open_datestring开奖时间(本地时区)
data[].codestring/object开奖号码(格式因彩种类型而异)
paginationobject分页信息
performance.query_time_msinteger查询耗时(毫秒)

获取最新一期开奖

GET
GET /api/lottery-results/latest

快速获取指定彩种的最新一期开奖结果,适用于需要实时展示最新开奖的场景。

请求参数

参数名类型必填说明
lottery_codestring彩种代码

请求示例

curl -X GET "https://lottery.langne.com/api/lottery-results/latest?lottery_code=CQSSC" \
  -H "Accept: application/json"

响应示例(200 OK)

{
  "success": true,
  "data": {
    "id": 123456,
    "lottery_code": "CQSSC",
    "issue": "20251031-100",
    "official_issue": "20251031100",
    "open_date": "2025-10-31 22:30:00",
    "code": "1,2,3,4,5",
    "created_at": "2025-10-31T22:30:05Z"
  },
  "timestamp": "2025-10-31T22:35:00Z"
}

获取平台统计信息

GET
GET /api/statistics

获取平台整体统计数据,包括彩种数量、开奖记录总数、最新开奖信息等。

请求示例

curl -X GET "https://lottery.langne.com/api/statistics" \
  -H "Accept: application/json"

响应示例(200 OK)

{
  "success": true,
  "summary": {
    "total_lottery_types": 179,
    "total_results": 125000,
    "lottery_type_categories": 7,
    "latest_draw": {
      "time": "2025-10-31T22:30:00Z",
      "lottery_code": "CQSSC",
      "issue": "20251031-100",
      "time_ago": "5分钟前"
    }
  },
  "timestamp": "2025-10-31T22:35:00Z"
}

📦 响应格式规范

标准响应结构

所有 API 响应均采用统一的 JSON 格式,包含以下标准字段:

{
  "success": boolean,        // 请求是否成功
  "data": object | array,    // 响应数据(成功时)
  "error": string,           // 错误信息(失败时)
  "message": string,         // 详细描述(可选)
  "timestamp": string        // 响应时间戳(ISO 8601格式)
}

开奖号码格式

不同类型的彩种,code 字段的格式有所不同:

标准格式(standard)

适用于:重庆时时彩、北京赛车、11选5等

"code": "1,2,3,4,5"

越南传统格式(vietnamese)

适用于:河内彩、胡志明彩等

"code": {
  "first_prize": "12345",
  "second_prize": "67890",
  "special_prizes": ["11111", "22222"]
  // ... 更多奖项
}

区块链格式(blockchain)

适用于:以太坊彩、比特币彩等

"code": {
  "code": "1,2,3,4,5",
  "code_block": "23697768",
  "code_hash": "0xfac6573055cc28809..."
}

分页响应

支持分页的接口会额外返回 pagination 对象:

"pagination": {
  "page": 1,           // 当前页码
  "limit": 20,         // 每页条数
  "total": 1000,       // 总记录数
  "totalPages": 50     // 总页数
}

⚠️ 错误处理

HTTP 状态码

状态码说明常见原因
200OK请求成功
400Bad Request请求参数错误或缺失必填参数
404Not Found请求的资源不存在(如彩种代码错误)
500Internal Server Error服务器内部错误
503Service Unavailable服务暂时不可用(维护中)

错误响应格式

{
  "success": false,
  "error": "INVALID_LOTTERY_CODE",
  "message": "彩种代码不存在或格式错误",
  "details": {
    "lottery_code": "INVALID_CODE",
    "valid_codes_example": ["CQSSC", "HNFC", "BJPK10"]
  },
  "timestamp": "2025-10-31T22:35:00Z"
}

常见错误代码

错误代码说明解决方案
MISSING_PARAMETER缺少必填参数检查请求参数,补充缺失的必填字段
INVALID_LOTTERY_CODE彩种代码无效先调用获取彩种列表接口确认有效代码
INVALID_DATE_FORMAT日期格式错误使用 YYYY-MM-DD 格式
INVALID_PAGE页码无效页码必须大于 0
LIMIT_EXCEEDEDlimit 参数超出范围limit 值应在 1-100 之间

⏱️ 速率限制

🎉 当前无速率限制

为了方便开发者使用,本 API 目前不设置速率限制。我们保留在必要时实施合理限制的权利,届时会提前通知。

使用建议

  • 建议使用缓存机制,避免频繁请求相同的数据
  • 对于高频查询场景,建议缓存时间设置为 30-60 秒
  • 使用分页功能时,建议 limit 参数不超过 100
  • 避免在循环中进行 API 调用,建议批量处理

💻 代码示例

JavaScript / Node.js

推荐
// 使用 async/await
async function getLotteryResults(lotteryCode, page = 1, limit = 20) {
  try {
    const response = await fetch(
      `https://lottery.langne.com/api/lottery-results?lottery_code=${lotteryCode}&page=${page}&limit=${limit}`
    );
    
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    
    const data = await response.json();
    
    if (data.success) {
      console.log(`获取到 ${data.data.length} 条记录`);
      return data.data;
    } else {
      console.error('请求失败:', data.error);
      return null;
    }
  } catch (error) {
    console.error('网络错误:', error);
    return null;
  }
}

// 使用示例
getLotteryResults('CQSSC', 1, 50).then(results => {
  if (results) {
    results.forEach(item => {
      console.log(`期号: ${item.issue}, 号码: ${item.code}`);
    });
  }
});

// 使用 axios
const axios = require('axios');

axios.get('https://lottery.langne.com/api/lottery-results', {
  params: {
    lottery_code: 'CQSSC',
    page: 1,
    limit: 20
  }
})
.then(response => {
  const data = response.data;
  if (data.success) {
    console.log('数据:', data.data);
  }
})
.catch(error => {
  console.error('Error:', error);
});

Python

import requests
from typing import Optional, Dict, List

class LotteryAPI:
    BASE_URL = "https://lottery.langne.com"
    
    def __init__(self):
        self.session = requests.Session()
        self.session.headers.update({
            'Accept': 'application/json',
            'User-Agent': 'LotteryClient/1.0'
        })
    
    def get_lottery_types(self, active: bool = True) -> Optional[List[Dict]]:
        """获取彩种列表"""
        try:
            response = self.session.get(
                f"{self.BASE_URL}/api/lottery-types",
                params={'active': active}
            )
            response.raise_for_status()
            data = response.json()
            return data.get('data') if data.get('success') else None
        except requests.RequestException as e:
            print(f"请求失败: {e}")
            return None
    
    def get_lottery_results(
        self, 
        lottery_code: str, 
        page: int = 1, 
        limit: int = 20,
        date: Optional[str] = None
    ) -> Optional[Dict]:
        """获取开奖结果"""
        params = {
            'lottery_code': lottery_code,
            'page': page,
            'limit': limit
        }
        if date:
            params['date'] = date
        
        try:
            response = self.session.get(
                f"{self.BASE_URL}/api/lottery-results",
                params=params
            )
            response.raise_for_status()
            return response.json()
        except requests.RequestException as e:
            print(f"请求失败: {e}")
            return None

# 使用示例
if __name__ == "__main__":
    api = LotteryAPI()
    
    # 获取彩种列表
    types = api.get_lottery_types()
    if types:
        print(f"共有 {len(types)} 个彩种")
    
    # 获取开奖结果
    results = api.get_lottery_results('CQSSC', page=1, limit=10)
    if results and results.get('success'):
        for item in results['data']:
            print(f"期号: {item['issue']}, 号码: {item['code']}")

PHP

<?php

class LotteryAPI {
    private $baseUrl = 'https://lottery.langne.com';
    
    /**
     * 获取彩种列表
     */
    public function getLotteryTypes($active = true) {
        $url = $this->baseUrl . '/api/lottery-types';
        $params = ['active' => $active ? 'true' : 'false'];
        
        return $this->request($url, $params);
    }
    
    /**
     * 获取开奖结果
     */
    public function getLotteryResults($lotteryCode, $page = 1, $limit = 20, $date = null) {
        $url = $this->baseUrl . '/api/lottery-results';
        $params = [
            'lottery_code' => $lotteryCode,
            'page' => $page,
            'limit' => $limit
        ];
        
        if ($date) {
            $params['date'] = $date;
        }
        
        return $this->request($url, $params);
    }
    
    /**
     * 获取最新一期
     */
    public function getLatestResult($lotteryCode) {
        $url = $this->baseUrl . '/api/lottery-results/latest';
        $params = ['lottery_code' => $lotteryCode];
        
        return $this->request($url, $params);
    }
    
    /**
     * 发送请求
     */
    private function request($url, $params = []) {
        $fullUrl = $url . '?' . http_build_query($params);
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $fullUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Accept: application/json',
            'User-Agent: LotteryClient/1.0'
        ]);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($httpCode !== 200) {
            return ['success' => false, 'error' => 'HTTP Error: ' . $httpCode];
        }
        
        return json_decode($response, true);
    }
}

// 使用示例
$api = new LotteryAPI();

// 获取彩种列表
$types = $api->getLotteryTypes();
if ($types['success']) {
    echo "共有 " . count($types['data']) . " 个彩种\n";
}

// 获取开奖结果
$results = $api->getLotteryResults('CQSSC', 1, 20);
if ($results['success']) {
    foreach ($results['data'] as $item) {
        echo "期号: {$item['issue']}, 号码: {$item['code']}\n";
    }
}

// 获取最新一期
$latest = $api->getLatestResult('CQSSC');
if ($latest['success']) {
    echo "最新开奖: " . json_encode($latest['data'], JSON_UNESCAPED_UNICODE) . "\n";
}
?>

Java

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

public class LotteryAPI {
    private static final String BASE_URL = "https://lottery.langne.com";
    private final HttpClient client;
    private final Gson gson;
    
    public LotteryAPI() {
        this.client = HttpClient.newHttpClient();
        this.gson = new Gson();
    }
    
    /**
     * 获取开奖结果
     */
    public JsonObject getLotteryResults(String lotteryCode, int page, int limit) {
        String url = String.format(
            "%s/api/lottery-results?lottery_code=%s&page=%d&limit=%d",
            BASE_URL, lotteryCode, page, limit
        );
        
        try {
            HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .header("Accept", "application/json")
                .GET()
                .build();
            
            HttpResponse<String> response = client.send(
                request, 
                HttpResponse.BodyHandlers.ofString()
            );
            
            if (response.statusCode() == 200) {
                return gson.fromJson(response.body(), JsonObject.class);
            } else {
                System.err.println("HTTP Error: " + response.statusCode());
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    /**
     * 使用示例
     */
    public static void main(String[] args) {
        LotteryAPI api = new LotteryAPI();
        JsonObject results = api.getLotteryResults("CQSSC", 1, 20);
        
        if (results != null && results.get("success").getAsBoolean()) {
            System.out.println("获取成功:");
            System.out.println(results.toString());
        }
    }
}

Go

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
)

const BaseURL = "https://lottery.langne.com"

type LotteryAPI struct {
    client *http.Client
}

type APIResponse struct {
    Success bool        `json:"success"`
    Data    interface{} `json:"data"`
    Error   string      `json:"error,omitempty"`
}

func NewLotteryAPI() *LotteryAPI {
    return &LotteryAPI{
        client: &http.Client{},
    }
}

// 获取开奖结果
func (api *LotteryAPI) GetLotteryResults(lotteryCode string, page, limit int) (*APIResponse, error) {
    params := url.Values{}
    params.Add("lottery_code", lotteryCode)
    params.Add("page", fmt.Sprintf("%d", page))
    params.Add("limit", fmt.Sprintf("%d", limit))
    
    apiURL := fmt.Sprintf("%s/api/lottery-results?%s", BaseURL, params.Encode())
    
    req, err := http.NewRequest("GET", apiURL, nil)
    if err != nil {
        return nil, err
    }
    
    req.Header.Set("Accept", "application/json")
    
    resp, err := api.client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, err
    }
    
    var result APIResponse
    err = json.Unmarshal(body, &result)
    if err != nil {
        return nil, err
    }
    
    return &result, nil
}

func main() {
    api := NewLotteryAPI()
    
    results, err := api.GetLotteryResults("CQSSC", 1, 20)
    if err != nil {
        fmt.Printf("Error: %v\n", err)
        return
    }
    
    if results.Success {
        fmt.Println("获取成功:", results.Data)
    } else {
        fmt.Println("请求失败:", results.Error)
    }
}

最佳实践

🚀 性能优化建议

  • 使用缓存:对于不频繁变化的数据(如彩种列表),建议在客户端缓存 24 小时
  • 合理分页:单次请求的 limit 不宜过大,建议 20-50 之间,避免影响性能
  • 并发控制:如需获取多个彩种数据,建议使用 Promise.all 或类似并发控制机制
  • 数据更新频率:开奖结果建议每 1-2 分钟刷新一次即可

⚠️ 错误处理建议

  • 检查 success 字段:始终检查响应中的 success 字段,而不仅仅是 HTTP 状态码
  • 实现重试机制:对于网络错误或 5xx 错误,建议实现指数退避的重试策略
  • 优雅降级:API 请求失败时,应提供友好的错误提示,避免应用崩溃
  • 日志记录:记录所有 API 请求和响应,便于排查问题

🔒 安全建议

  • 使用 HTTPS:始终使用 HTTPS 协议访问 API
  • 输入验证:在客户端验证用户输入,避免发送无效请求
  • 避免暴露敏感信息:不要在前端代码或日志中暴露敏感业务逻辑

💡 开发建议

  • 封装 API 客户端:建议将 API 调用封装成独立的客户端类或模块
  • 类型定义:使用 TypeScript 或类似工具定义响应数据的类型
  • 版本控制:虽然当前无需指定版本,但建议在代码中记录使用的 API 版本
  • 单元测试:为 API 调用编写单元测试,确保代码质量

常见问题(FAQ)

Q: API 是否完全免费?

A: 是的,本 API 完全免费,无任何隐藏费用,无需注册,无需 API Key,无访问限制。

Q: 数据更新频率如何?

A: 系统每分钟自动采集一次数据,确保数据的实时性。对于分分彩等高频彩种,延迟通常在 10 秒以内。

Q: 支持跨域请求吗?

A: 是的,API 完全支持 CORS(跨域资源共享),可以直接在前端 JavaScript 代码中调用。

Q: 如何获取特定日期的开奖数据?

A: 使用 date 参数即可, 格式为 YYYY-MM-DD。例如:?lottery_code=CQSSC&date=2025-10-31

Q: API 的响应速度如何?

A: API 已经过 S 级性能优化,通常响应时间在 50-100ms 之间。如遇到较慢响应,请检查网络环境。

Q: 遇到错误怎么办?

A: 请先查看错误响应中的 error 和 message 字段。如果问题持续存在,请检查请求参数是否正确, 或参考本文档中的错误处理章节。

需要帮助?

如果您在使用 API 过程中遇到任何问题,或有任何建议,欢迎与我们联系。

📧 技术支持

邮箱: support@lottery.langne.com
响应时间: 24小时内

🌐 在线文档

网站: https://lottery.langne.com
持续更新中

⭐ 本 API 由专业团队维护,保证 99.9% 的可用性

© 2025 彩票开奖数据 API 平台 · 版本 1.0 · 最后更新:2025-10-31