• API 功能

    • 支持所有港股公告查询;
    • 包含 10 年全量公告数据;
    • 返回公告原始文件信息;
    • 公告文件可直接下载;
    • 超高的查询效率,百万级数据毫秒级返回;
    • 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3);
    • 全面兼容 Apple ATS;
    • 全国多节点 CDN 部署;
    • 接口极速响应,多台服务器构建 API 接口负载均衡。
    • 接口调用状态与状态监控
  • API 文档

    接口地址: https://api.gugudata.com/stock/hk/bulletin

    返回格式: application/json; charset=utf-8

    请求方式: GET

    请求协议: HTTPS

    请求示例: https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc

    数据预览: https://www.gugudata.com/preview/stockhkbulletin

    接口测试:  https://api.gugudata.com/stock/hk/bulletin/demo

    OpenAPI: https://www.gugudata.com/openapi/gugudata.openapi.3.1.json

    前置接口

    前置接口说明: 查询港股股票代码列表数据,支持分页查询

    前置接口地址: https://api.gugudata.com/stock/hksymbols?appkey=YOUR_APPKEY&pageindex=YOUR_VALUE&pagesize=YOUR_VALUE

    前置接口参数说明: appkey=YOUR_APPKEY&pageindex=第几页&pagesize=每页返回数量,最大 20 条

    前置接口返回格式: application/json; charset=utf-8

    前置接口返回说明: 包含股票编码、股票名称、股票中文名称

    前置接口请求方式: GET

    前置接口请求协议: HTTPS

    请求参数(GET 请求方式可参见下方示例代码)

    参数名 参数类型 是否必须 默认值 备注
    appkey string YOUR_APPKEY 付费后获取的 APPKEY
    symbol string YOUR_VALUE 港股股票代码,具体值参见 港股股票代码参数枚举页面。支持一次查询多个股票,使用逗号隔开,参数格式为:00004,00012
    pageindex integer 1 分页参数,从 1 开始,默认为 1
    pagesize integer 10 分页参数,每页返回数量,最大 20 条,默认为 10
    language string en 公告语言,可选 en | zh,en 英文,zh 繁体中文
    sortorder string desc 公告时间排序,可选 desc | asc,表示按照发布时间倒序或正序查询

    返回参数

    参数名 参数类型 备注
    DataStatus.StatusCode integer 接口返回状态码
    DataStatus.StatusDescription string 接口返回状态说明
    DataStatus.ResponseDateTime string 接口数据返回时间
    DataStatus.DataTotalCount integer 此条件下的总数据量,一般用于分页计算
    Data.Symbol string 港股股票代码
    Data.StockName string 股票名称
    Data.Title string 公告标题
    Data.ShortText string 公告简介
    Data.LongText string 公告详情
    Data.FileSize string 公告文件大小
    Data.FileType string 公告文件类型
    Data.FileLink string 公告文件链接
    Data.BulletinDateTime string 公告时间
    Data.UniqueId string 公告内部唯一 ID,中英文版本保持一致的唯一 ID
  • 接口 HTTP 响应标准状态码

    状态码 状态码解释 备注
    200 接口正常响应 请求成功,业务状态请结合响应体中的自定义业务码判断。
    400 请求参数错误 请求参数缺失、格式错误或参数组合不合法。
    401 鉴权失败 缺少 appkey 或 appkey 无效。
    403 无权限访问 订单到期、权限不足或接口额度不可用。
    404 资源不存在 请求路径不存在。
    405 请求方法不允许 当前路径不支持该 HTTP 方法。
    415 请求内容类型不支持 上传或请求体的内容类型不符合接口要求。
    429 请求频率受限 一般建议同一个 IP 每秒请求不超过 5 次 (QPS<=5),我们不限制同一个 key 的请求总次数,但当单位时间内同一个 IP 请求次数过多,或 AI CDN 判定为恶意抓取数据、流量攻击等异常时,CDN 会返回此状态码,请适当降低请求频率。如有特殊大并发请求场景需求,可联系我们添加白名单处理。
    500 服务内部错误 服务端处理异常,请稍后重试。
    502 上游依赖错误 上游依赖服务不可用或返回异常。
  • 接口自定义状态码

    自定义状态码 自定义状态码解释 备注
    100 正常返回
    101 参数错误
    102 请求频率受限 一般建议同一个 IP 每秒请求不超过 5 次 (QPS<=5),我们不限制同一个 key 的请求总次数,但当单位时间内同一个 IP 请求次数过多,或 AI CDN 判定为恶意抓取数据、流量攻击等异常时,CDN 会返回此状态码,请适当降低请求频率。如有特殊大并发请求场景需求,可联系我们添加白名单处理。
    103 账号欠费
    104 APPKEY 错误 请检查传递的 APPKEY 是否为开发者中心获取到的值
    110 接口响应错误
  • 请求示例代码
    curl --location --request GET 'https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc'
    #include <curl/curl.h>
    
    int main(void) {
      CURL *curl = curl_easy_init();
      if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc");
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        CURLcode res = curl_easy_perform(curl);
        (void)res;
        curl_easy_cleanup(curl);
      }
      return 0;
    }
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    
    var client = new HttpClient();
    var request = new HttpRequestMessage(HttpMethod.Get, "https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc");
    var response = client.SendAsync(request).Result;
    Console.WriteLine(response.Content.ReadAsStringAsync().Result);
    
    package main
    
    import (
      "fmt"
      "io"
      "net/http"
    )
    
    func main() {
      url := "https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc"
      req, err := http.NewRequest("GET", url, nil)
      if err != nil {
        fmt.Println(err)
        return
      }
      res, err := http.DefaultClient.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
      body, err := io.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    
    OkHttpClient client = new OkHttpClient().newBuilder().build();
    Request request = new Request.Builder()
      .url("https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc")
      .method("GET", null)
      .build();
    Response response = client.newCall(request).execute();
    System.out.println(response.body().string());
    
    $.ajax({
      url: "https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc",
      method: "GET",
    }).done(function (response) {
      console.log(response);
    });
    
    const response = await fetch("https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc", {
      method: "GET"
    });
    console.log(await response.text());
    
    const response = await fetch("https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc", {
      method: "GET"
    });
    console.log(await response.text());
    
    #import <Foundation/Foundation.h>
    
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc"]];
    [request setHTTPMethod:@"GET"];
    NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
      if (error) {
        NSLog(@"%@", error);
        return;
      }
      NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
    }];
    [task resume];
    
    <?php
    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => "https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_CUSTOMREQUEST => "GET",
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;
    
    import requests
    
    url = "https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc"
    response = requests.request("GET", url)
    print(response.text)
    
    require "uri"
    require "net/http"
    
    url = URI("https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc")
    https = Net::HTTP.new(url.host, url.port)
    https.use_ssl = true
    request = Net::HTTP::Get.new(url)
    response = https.request(request)
    puts response.read_body
    
    import Foundation
    
    let semaphore = DispatchSemaphore(value: 0)
    var request = URLRequest(url: URL(string: "https://api.gugudata.com/stock/hk/bulletin?appkey=YOUR_APPKEY&symbol=YOUR_VALUE&pageindex=1&pagesize=10&language=en&sortorder=desc")!, timeoutInterval: .infinity)
    request.httpMethod = "GET"
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
      defer { semaphore.signal() }
      guard let data = data else {
        print(String(describing: error))
        return
      }
      print(String(data: data, encoding: .utf8)!)
    }
    task.resume()
    semaphore.wait()
    
  • 常见问题 Q&A

    • Q: 数据请求有缓存吗?

      A: 我们为所有数据请求提供实时响应。对于定期更新的数据,我们在其更新周期内实施缓存策略,以优化性能。

    • Q: 如何保证请求时 key 的安全性?

      A: 我们建议将对 API 的请求操作放置在您的应用程序后端。这样,前端请求只与您的后端服务交互,确保了更高的安全性和易于维护的架构。

    • Q: 接口可以用于哪些开发语言?

      A: 我们的接口支持所有能进行网络请求的开发语言,便于在各类项目中快速整合数据。

    • Q: 接口的性能可以保证吗?

      A: 我们的接口后台使用与商业级项目相同的架构,保证了稳定且高效的性能。您可以通过访问测试接口了解更多性能信息。

  • 服务协议以及服务免责声明

    用户应当充分阅读 服务协议 以及 服务免责声明 ,用户购买与使用咕咕数据 API 服务亦视为接受本协议。

  • 技术支持

    • 技术支持邮箱: support@gugudata.com
    • 微信客服: 客服链接

业务相关接口推荐

稳定提供服务 10 年 港股基础信息数据
  • 所有港股含市值基础信息
  • 港指市值数据 / 所有港股数据
  • 2999元/年限时折扣 999元/年
查看详情 被调用于 6 秒前
30% 折扣
稳定提供服务 10 年 港股历年三大财务报表
  • 历年所有财报数据
  • 全量港股数据 / 最全三大财报数据
  • 2999元/年限时折扣 999元/年
查看详情 数据校验更新于 3 分钟前
30% 折扣
稳定提供服务 10 年 A 股业绩报表数据
  • A 股上市公司季度业绩报表数据
  • 全量数据 / 业绩报表
  • 2999元/年限时折扣 1499元/年
查看详情 数据校验更新于 1 小时前
50% 折扣
稳定提供服务 10 年 A 股涨停板实时数据
  • 所有A股涨停板实时数据
  • A股涨停数据 / 实时数据
  • 2999元/年限时折扣 999元/年
查看详情 被调用于 9 秒前
30% 折扣