court-api-wrapper
Version:
CLI & wrapper for CourtListener API
41 lines (36 loc) • 1.36 kB
JavaScript
const axios = require("axios");
const API_TOKEN = "3af12d5e5b6b8ac852d6194f52cca57324a6adb9"; // Keep this private
async function searchCases({ query }) {
try {
const url = `https://www.courtlistener.com/api/rest/v3/search/?q=${encodeURIComponent(query)}`;
const { data } = await axios.get(url, {
headers: {
Authorization: `Token ${API_TOKEN}`,
},
});
return {
results: (data?.results || []).map((item) => ({
caseName: item.caseName || "N/A",
court: item.court || "N/A",
dateFiled: item.dateFiled || "N/A",
absolute_url: item.absolute_url
? item.absolute_url.startsWith("http")
? item.absolute_url
: `https://www.courtlistener.com${item.absolute_url}`
: "",
})),
};
} catch (err) {
if (err.response?.status === 403) {
console.error("🚫 Access denied. Check if your API token is valid.");
} else if (err.response?.status === 429) {
console.error("🚫 API rate limit reached. Please try again later.");
} else if (err.code === "ENOTFOUND" || err.code === "ECONNREFUSED") {
console.error("🌐 Network error. Please check your internet connection.");
} else {
console.error("❌ Unexpected error:", err.message);
}
return { results: [] };
}
}
module.exports = { searchCases };