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.
Fair-use guideline: approximately 60 requests per minute per IP. Hard enforcement (429 responses) may be added if abusive traffic is detected. For production RAG pipelines, bulk access, or vector (semantic) search access, contact us.
Contact: [email protected] — include your use case and expected request volume.