You can access search results via JSON API by adding format=json
to your query:
https://codesearch.val.run/image-url.jpg%20%22Image%20title%22?q=api&page=25&format=json
For typeahead suggestions, use the /typeahead
endpoint:
https://codesearch.val.run/typeahead?q=api
Returns an array of strings in format "username" or "username/projectName"
Found 11770 results for "api"(917ms)
10const [query, setQuery] = React.useState("");
11const [targetAccount, setTargetAccount] = React.useState("");
12const [apiKey, setApiKey] = React.useState("");
13const [searchType, setSearchType] = React.useState("Latest");
14const [sinceDate, setSinceDate] = React.useState("");
50const fetchAllTweets = React.useCallback(
51async (fullQuery, type, targetCount) => {
52if (!apiKey.trim()) {
53setError("Please enter your SocialData API Key.");
54return;
55}
79}
8081const response = await fetch(`/api/search?${params.toString()}`, {
82headers: { "X-Api-Key": apiKey },
83});
8488const errorData = await response
89.json()
90.catch(() => ({ message: `API Error: ${response.statusText}` }));
91throw new Error(
92errorData.message
93|| `API Error: ${response.statusText} on page ${pageNum}`,
94);
95}
100if (data.status === "error") {
101throw new Error(
102data.message || `API returned an error on page ${pageNum}`,
103);
104}
135}
136},
137[apiKey],
138);
139144return;
145}
146if (!apiKey.trim()) {
147setError("Please enter your SocialData API Key.");
148return;
149}
176{ className: "app" },
177React.createElement("h1", { className: "title" }, "X Search"),
178// API Key Input
179React.createElement(
180"div",
185React.createElement(
186"label",
187{ htmlFor: "apiKey", className: "label" },
188"API Key",
189),
190React.createElement("input", {
191type: "password",
192id: "apiKey",
193value: apiKey,
194onChange: (e) => setApiKey(e.target.value),
195placeholder: "Enter SocialData API Key",
196className: "input",
197}),
565rel: "noopener noreferrer",
566},
567"SocialData API",
568),
569" | ",
598const url = new URL(request.url);
599600// Search API Proxy Endpoint
601if (url.pathname === "/api/search" && request.method === "GET") {
602const apiKey = request.headers.get("X-Api-Key");
603if (!apiKey) {
604return Response.json(
605{ status: "error", message: "API Key missing in request" },
606{ status: 400 },
607);
619}
620621const apiUrl = new URL("https://api.socialdata.tools/twitter/search");
622apiUrl.searchParams.set("query", query);
623apiUrl.searchParams.set("type", type);
624if (cursor) apiUrl.searchParams.set("cursor", cursor);
625626try {
627const apiResponse = await fetch(apiUrl.toString(), {
628headers: {
629Authorization: `Bearer ${apiKey}`,
630Accept: "application/json",
631},
634let responseData;
635try {
636responseData = await apiResponse.json();
637} catch (e) {
638const text = await apiResponse.text();
639console.error("Non-JSON response from SocialData:", text);
640return Response.json(
641{
642status: "error",
643message: `SocialData API non-JSON response: ${apiResponse.statusText}`,
644},
645{ status: apiResponse.status },
646);
647}
648649if (!apiResponse.ok || responseData.status === "error") {
650console.error(
651`SocialData API Error (${apiResponse.status}):`,
652responseData,
653);
656status: "error",
657message: responseData?.message
658|| `SocialData API Error: ${apiResponse.statusText}`,
659},
660{ status: apiResponse.status },
661);
662}
20"mpgc_bulls_skinned": "Bulls skinned",
21"mpgc_burdock_root_picked": "Burdock Roots picked",
22"mpgc_capitale_notes_collected": "Capitale notes collected",
23"mpgc_chanterelle_picked": "Chanterelle picked",
24"mpgc_chickens_skinned": "Chickens skinned",