gbiz-info-api 0.2.0

gBizINFO REST API (v2) を Rust から利用するためのクライアントライブラリ
Documentation

gbiz-info-api

Crates.io Documentation License: MIT

gBizINFO REST API (v2) を Rust から利用するためのクライアントライブラリです。

gBizINFO は経済産業省が提供する法人情報サイトで、法人として登記されている約400万社を対象に、 法人番号・法人名・本社所在地に加え、届出・認定、表彰、財務、特許、調達、補助金、職場情報などの 法人活動情報を取得できます。

API トークンの取得

Web API利用申請から申請してください。

インストール

[dependencies]
gbiz-info-api = "0.2"

使い方

法人検索

use gbiz_info_api::{GbizInfoClient, HojinSearchQuery};

#[tokio::main]
async fn main() -> Result<(), gbiz_info_api::GbizError> {
    let client = GbizInfoClient::new(std::env::var("API_TOKEN").unwrap());

    let query = HojinSearchQuery::new()
        .name("トヨタ自動車")   // 法人名(部分一致)
        .corporate_type("301") // 株式会社
        .prefecture("23")      // 愛知県
        .limit(10);
    let res = client.search(&query).await?;
    for info in res.into_hojin_infos() {
        println!(
            "{} {}",
            info.corporate_number.unwrap_or_default(),
            info.name.unwrap_or_default(),
        );
    }
    Ok(())
}

法人番号を指定した取得

# use gbiz_info_api::GbizInfoClient;
# async fn example(client: GbizInfoClient) -> Result<(), gbiz_info_api::GbizError> {
// 基本情報
let res = client.hojin("1180301018771").await?;

// メタデータ(出典元・最終更新日等)付きで取得
let res = client.hojin("1180301018771").metadata_flg(true).await?;

// カテゴリ別: certification / commendation / corporation / finance /
//             patent / procurement / subsidy / workplace
let res = client.finance("1180301018771").await?;
let res = client.subsidy("1180301018771").await?;
# Ok(())
# }

期間内に追加/更新された情報の取得

# use gbiz_info_api::{GbizInfoClient, UpdateInfoQuery};
# async fn example(client: GbizInfoClient) -> Result<(), gbiz_info_api::GbizError> {
let query = UpdateInfoQuery::new("20260401", "20260430").page(1);
let res = client.update_info(&query).await?;
println!(
    "総件数: {} / 総ページ数: {}",
    res.total_count.as_deref().unwrap_or("-"),
    res.total_page.as_deref().unwrap_or("-"),
);
for info in res.into_hojin_infos() {
    println!("{}", info.name.unwrap_or_default());
}
# Ok(())
# }

エラーハンドリング

# use gbiz_info_api::GbizInfoClient;
# async fn example(client: GbizInfoClient) {
use gbiz_info_api::GbizError;

match client.hojin("0000000000000").await {
    Ok(res) => { /* ... */ }
    Err(err) if err.is_not_found() => eprintln!("法人が見つかりません"),
    Err(GbizError::Status { status, body }) => eprintln!("API エラー {status}: {body}"),
    Err(err) => eprintln!("通信エラー等: {err}"),
}
# }

カスタム設定

# fn example() {
use std::time::Duration;
use gbiz_info_api::GbizInfoClient;

let http = reqwest::Client::builder()
    .timeout(Duration::from_secs(30))
    .build()
    .unwrap();
let client = GbizInfoClient::builder("YOUR_API_TOKEN")
    .http_client(http)
    .build();
# }

対応エンドポイント

メソッド エンドポイント
search GET /v2/hojin
hojin GET /v2/hojin/{corporate_number}
certification GET /v2/hojin/{corporate_number}/certification
commendation GET /v2/hojin/{corporate_number}/commendation
corporation GET /v2/hojin/{corporate_number}/corporation
finance GET /v2/hojin/{corporate_number}/finance
patent GET /v2/hojin/{corporate_number}/patent
procurement GET /v2/hojin/{corporate_number}/procurement
subsidy GET /v2/hojin/{corporate_number}/subsidy
workplace GET /v2/hojin/{corporate_number}/workplace
update_info GET /v2/hojin/updateInfo
update_info_certification GET /v2/hojin/updateInfo/certification
update_info_commendation GET /v2/hojin/updateInfo/commendation
update_info_corporation GET /v2/hojin/updateInfo/corporation
update_info_finance GET /v2/hojin/updateInfo/finance
update_info_patent GET /v2/hojin/updateInfo/patent
update_info_procurement GET /v2/hojin/updateInfo/procurement
update_info_subsidy GET /v2/hojin/updateInfo/subsidy
update_info_workplace GET /v2/hojin/updateInfo/workplace

テスト

# 単体テスト(ネットワーク不要)
cargo test --lib --test deserialize

# 統合テスト(.env または環境変数 API_TOKEN が必要)
cargo test --test api

ライセンス

MIT