GXceed Paper Search API
Search 5,000+ GX and sustainability papers — no authentication required. Suitable for AI agents, RAG pipelines, and developer integrations.
GET https://gxceed.com/api/v1/papers/search
- No API key required
- CORS:
Access-Control-Allow-Origin: * - Response cached 60 s at edge
- OpenAPI 3.1 spec: /openapi.json
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| q | string | Yes | — | Search query. Up to 5 whitespace-separated terms, each ≥ 2 chars. AND-combined across title, abstract, AI summaries, tags, and topic. |
| topic | string | No | null | Filter by primary topic slug. See topic list below. |
| lang | string | No | all | `ja` / `en` / `all` — filter by paper language. |
| limit | integer | No | 10 | Max results to return (1–50). |
| offset | integer | No | 0 | Pagination offset. |
esgenergy_transitioncarbon_pricingclimate_financeccushydrogenrenewablepolicycarbon_accountingclimate_sciencedisclosure_infrastructuretransition_financeenergy_efficiencyscope3scope1_2tcfdsbtcdpevgreenwashingclimate_riskbiodiversitysupply_chainai_esgotherGET https://gxceed.com/api/v1/papers/search?q=carbon+disclosure+EDINET&limit=3
curl "https://gxceed.com/api/v1/papers/search?q=carbon+pricing&topic=carbon_pricing&lang=en&limit=5"
import urllib.request, json
url = "https://gxceed.com/api/v1/papers/search?q=scope+3+emissions&limit=10"
with urllib.request.urlopen(url) as r:
data = json.loads(r.read())
for paper in data["results"]:
print(paper["year"], paper["title_en"] or paper["title"]){
"api_version": "v1",
"query": "carbon disclosure EDINET",
"topic": null,
"lang": "all",
"total": 38,
"count": 3,
"limit": 3,
"offset": 0,
"results": [
{
"id": "abc123",
"title": "Structured GHG Disclosure Accessibility for Listed Japanese Firms",
"title_ja": "上場企業の GHG 開示アクセシビリティ構造化",
"title_en": "Structured GHG Disclosure Accessibility for Listed Japanese Firms",
"authors": ["Hiroyuki Kokubu"],
"year": 2026,
"abstract": "An engineering pilot using EDINET and LLM-assisted report extraction...",
"url": "https://gxceed.com/papers/abc123",
"citation_url": "https://doi.org/10.2139/ssrn.xxxx",
"doi": "10.2139/ssrn.xxxx",
"source_url": "https://ssrn.com/abstract=xxxx",
"venue": "SSRN",
"venue_type": "preprint",
"topic": "disclosure_infrastructure",
"tags": ["GHG", "EDINET", "disclosure", "LLM"],
"lang": "en",
"updated_at": "2026-05-16T00:00:00.000Z"
}
]
}| Field | Type | Notes |
|---|---|---|
| api_version | string | API version identifier (currently "v1") — guard against future breaking changes |
| total | integer | Total matching papers before limit/offset |
| count | integer | Results returned in this response |
| results[].id | string | GXceed internal paper ID |
| results[].title | string | null | Original language title |
| results[].title_ja | string | null | Japanese title (AI-translated if needed) |
| results[].title_en | string | null | English title (AI-translated if needed) |
| results[].authors | string[] | Author display names |
| results[].year | integer | null | Publication year |
| results[].abstract | string | null | AI summary (EN preferred) or original abstract, capped at 600 chars |
| results[].url | string | GXceed paper page URL |
| results[].citation_url | string | Best stable citation link with provenance: DOI link when available, else source URL, else GXceed page |
| results[].doi | string | null | Digital Object Identifier |
| results[].source_url | string | null | Original source URL (preprint server, journal, etc.) |
| results[].venue | string | null | Publication venue name |
| results[].venue_type | string | null | preprint / journal / conference / dataset / report |
| results[].topic | string | null | Primary GX topic classification |
| results[].tags | string[] | AI-assigned keyword tags |
| results[].lang | string | null | ja / en / mul (multilingual) |
| results[].updated_at | string | null | ISO 8601 UTC — when the record was last updated (freshness) |
The OpenAPI specification at /openapi.json can be used as a basis for integration with ChatGPT Actions, Gemini function calling, Claude/MCP-compatible tools, and other AI agent frameworks. It provides machine-readable parameter schemas, the operationId searchPapers, and full response types.
Claude does not consume OpenAPI directly. The spec serves as the basis for a thin MCP-compatible tool wrapper that exposes the single searchPapers operation. Because the endpoint needs no auth and sends CORS *, the wrapper can call it directly.
# The single operation a thin MCP/tool wrapper exposes: searchPapers(q, topic?, lang?, limit?, offset?) → GET https://gxceed.com/api/v1/papers/search # Spec: https://gxceed.com/openapi.json (operationId: searchPapers) # No auth, CORS *, so the wrapper can call it directly.
async function searchPapers(args) {
const u = new URL("https://gxceed.com/api/v1/papers/search");
u.searchParams.set("q", args.q);
if (args.topic) u.searchParams.set("topic", args.topic);
if (args.lang) u.searchParams.set("lang", args.lang);
if (args.limit) u.searchParams.set("limit", String(args.limit));
const res = await fetch(u); // no auth, CORS *
return await res.json(); // { api_version, total, results[] }
}Register searchPapers as a Gemini function declaration. The parameter schema mirrors the OpenAPI spec; on a function call, your app issues the GET request below.
{
"tools": [{
"functionDeclarations": [{
"name": "searchPapers",
"description": "Search GX, ESG, and climate disclosure papers indexed by GXceed.",
"parameters": {
"type": "object",
"properties": {
"q": { "type": "string", "description": "Up to 5 AND-combined terms (2-500 chars)" },
"topic": { "type": "string", "description": "Optional topic slug" },
"lang": { "type": "string", "enum": ["ja", "en", "all"] },
"limit": { "type": "integer", "description": "1-50, default 10" }
},
"required": ["q"]
}
}]
}]
}
// On a searchPapers(args) call, run:
// GET https://gxceed.com/api/v1/papers/search?q=...&topic=...&lang=...&limit=...In the GPT editor, choose "Add actions" → import from URL → paste https://gxceed.com/openapi.json. No auth required.
Use any OpenAPI-based tool loader. Point to /openapi.json. The endpoint supports CORS so it can be called directly from any environment.
Sources: arXiv, Jxiv (JST), Zenodo, SSRN, EarthArXiv, J-STAGE, CiNii Research, Research Square, OpenAlex, IEA, Carbon Brief, Nature Energy, ChinaXiv / ChinaRxiv. Relevance scored by DeepSeek AI (threshold ≥ 80/100).
This API is provided for research, discovery, and citation-support purposes. Bulk harvesting, resale, or abusive automated access is not permitted.
AI-generated summaries and GXceed-authored metadata are provided under CC BY 4.0 unless otherwise stated. Third-party paper metadata, abstracts, DOIs, and source links remain subject to their original publishers' terms. See Terms.
Rate limit: approximately 60 requests per minute per IP. Requests exceeding this limit may receive a 429 response; back off and retry after a short delay. For production RAG pipelines, bulk access, or vector (semantic) search access, contact us.
Contact: [email protected] — include your use case and expected request volume.