PageSourceSearch

https://microlink.io/component---src-templates-index-js-content-fi…endpoint-to-json-md-49eaa9fb98b5152a93f2.js

js microlink.io collected 2026-09-24 08:51:03 UTC 15,682 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkmicrolink_www=self.webpackChunkmicrolink_www||[]).push([[22291],{83487:function(e,t,n){n.d(t,{N:function(){return l}});var r=n(63679),o=n(70066),i=n(62932),s=n(7129);const a=(0,r.default)(i.A).withConfig({displayName:"Figcaption__FigcaptionBase",componentId:"sc-1qp65bc-0"})([""," text-align:center;"],(0,o.w4)({fontSize:0,color:"black50"})),l=(0,s.Ub)(a)},84070:function(e,t,n){n.r(t),n.d(t,{Head:function(){return g},default:function(){return b}});var r=n(28453),o=n(96540),i=n(83487),s=n(98868),a=n(62191);function l(e){const t=Object.assign({p:"p",a:"a",code:"code",h2:"h2",pre:"pre",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td"},(0,r.R)(),e.components);return o.createElement(o.Fragment,null,o.createElement(t.p,null,"Use ",o.createElement(t.a,{href:"/docs/sdk/methods/extract/attr"},"attr")," with ",o.createElement(t.code,null,"json")," when the target URL is already a JSON endpoint. Microlink fetches the URL, parses the full response body with ",o.createElement(t.code,null,"JSON.parse"),", and returns native structured data instead of a string."),"\n",o.createElement(s.G,{height:300,mqlCode:{url:"https://pokeapi.co/api/v2/pokemon/pikachu",data:{json:{attr:"json"}},meta:!1,prerender:!1}}),"\n",o.createElement(i.N,null,"Read the parsed endpoint payload from ",o.createElement("code",null,"data.json"),"."),"\n",o.createElement(t.h2,{id:"return-json-directly"},"Return JSON directly"),"\n",o.createElement(t.p,null,"Add ",o.createElement(t.a,{href:"/docs/api/parameters/embed"},"embed")," with ",o.createElement(t.code,null,"json")," when the API URL itself should return the parsed JSON field:"),"\n",o.createElement(s.G,{height:320,mqlCode:{url:"https://pokeapi.co/api/v2/pokemon/pikachu",data:{json:{attr:"json"}},meta:!1,prerender:!1,embed:"json"}}),"\n",o.createElement(i.N,null,"The response is JSON, so a worker or backend job can consume it without reading a nested ",o.createElement("code",null,"data.json")," field."),"\n",o.createElement(t.p,null,"The same request as a raw URL:"),"\n",o.createElement(t.pre,null,o.createElement(t.code,{className:"language-bash"},"https://api.microlink.io?url=https://pokeapi.co/api/v2/pokemon/pikachu&data.json.attr=json&meta=false&prerender=false&embed=json\n")),"\n",o.createElement(t.h2,{id:"keep-the-whole-response-body"},"Keep the whole response body"),"\n",o.createElement(t.p,null,o.createElement(t.code,null,"attr: 'json'")," is whole-page only. Do not combine it with ",o.createElement(t.a,{href:"/docs/sdk/methods/extract/selector"},"selector")," or ",o.createElement(t.a,{href:"/docs/sdk/methods/extract/selectorAll"},"selectorAll"),"; Microlink parses the entire endpoint response."),"\n",o.createElement(t.pre,null,o.createElement(t.code,{className:"language-js"},"{\n  url: 'https://pokeapi.co/api/v2/pokemon/pikachu',\n  data: {\n    json: {\n      attr: 'json'\n    }\n  },\n  meta: false,\n  prerender: false\n}\n")),"\n",o.createElement(t.p,null,"The original JSON shape is preserved as structured data. Strings that contain HTML-like text, such as ",o.createElement(t.code,null,'"<b>bold</b>"'),", stay as strings and are not interpreted as DOM markup."),"\n",o.createElement(t.h2,{id:"when-to-use-it"},"When to use it"),"\n",o.createElement(t.table,null,o.createElement(t.thead,null,o.createElement(t.tr,null,o.createElement(t.th,null,"Need"),o.createElement(t.th,null,"Use"))),o.createElement(t.tbody,null,o.createElement(t.tr,null,o.createElement(t.td,null,"Fetch a REST API through Microlink"),o.createElement(t.td,null,o.createElement(t.code,null,"attr: 'json'"))),o.createElement(t.tr,null,o.createElement(t.td,null,"Keep response metadata next to the parsed payload"),o.createElement(t.td,null,"leave ",o.createElement(t.code,null,"embed")," out")),o.createElement(t.tr,null,o.createElement(t.td,null,"Return the parsed field as the API response"),o.createElement(t.td,null,"add ",o.createElement(t.code,null,"embed: 'json'"))),o.createElement(t.tr,null,o.createElement(t.td,null,"Extract content from an HTML page"),o.createElement(t.td,null,"use ",o.createElement(t.code,null,"text"),", ",o.createElement(t.code,null,"markdown"),", or ",o.createElement(t.code,null,"html")," instead")))),"\n",o.createElement(t.h2,{id:"next-step"}
1,"Next step"),"\n",o.createElement(t.p,null,"Use ",o.createElement(a.N,{href:"/docs/guides/data-extraction/defining-rules#extract-json",children:"Data extraction: Extract JSON"})," for the full rule behavior. Use ",o.createElement(a.N,{href:"/docs/guides/content-conversion/url-to-text",children:"URL to Text"}),", ",o.createElement(a.N,{href:"/docs/guides/content-conversion/url-to-markdown",children:"URL to Markdown"}),", or ",o.createElement(a.N,{href:"/docs/guides/content-conversion/url-to-html",children:"URL to HTML"})," when the source is a web page, PDF, or office document instead of a JSON endpoint."))}var c=function(e={}){const{wrapper:t}=Object.assign({},(0,r.R)(),e.components);return t?o.createElement(t,e,o.createElement(l,e)):l(e)},u=n(29451),d=n(55140),p=n(44310),m=n(64810),h=n(50754),f=n(55267);const g=({pageContext:e,location:t})=>{const{description:n,isDocPage:r,isBlogPage:i,frontmatter:s={},lastEdited:a}=e,l=(0,m.GR)("502257632"),c=(0,d.Q)(),{name:h}=c;if(r||i){const e=(0,u.v1)(t),c=s.date&&!isNaN(new Date(s.date).getTime())?s.date:void 0,d=a&&!isNaN(new Date(a).getTime())?a:c,m={...s,description:n,name:r?"Guides"===e?"Microlink Guides":"Microlink Docs":"Microlink Blog",title:r?"Guides"===e?s.title||"":`${h} ${e}: ${s.title||""}`:s.title,publishedDate:c,modifiedDate:d,schemaType:i?"Article":"TechArticle",authors:i?(e=>{const t=new Map(((null==l||null===(e=l.allAuthorsYaml)||void 0===e?void 0:e.nodes)||[]).map(e=>[e.key,e.name]));return(s.authors||[]).flatMap(e=>{const n=t.get(e);return n?[n]:[]})})():void 0};return o.createElement(p.A,m)}return o.createElement(p.A,s)},$=({pageContext:e,children:t,...n})=>{var r;const{isDocPage:i,isBlogPage:s,lastEdited:a,githubUrl:l,frontmatter:c={}}=e,u=null!==(r=c.date)&&void 0!==r?r:a;return i?o.createElement(f.A,Object.assign({title:c.title,isPro:c.isPro,date:u,content:t,githubUrl:l},n)):o.createElement(h.A,Object.assign({title:c.title,subtitle:c.subtitle,authors:c.authors,date:u&&new Date(u),lastEdited:c.lastEdited?a:null,isBlogPage:s,content:t},n))};function b(e){return o.createElement($,e,o.createElement(c,e))}},88976:function(e,t,n){n.d(t,{P_:function(){return s},Zv:function(){return m},gP:function(){return i}});var r=n(54506);const o=e=>e?"https://pro.microlink.io":"https://api.microlink.io",i=(e,t={})=>{if(!e||"string"!=typeof e)throw new Error("URL parameter is required and must be a string");const{binding:n,...r}=t;return{CLI:j(e,r),cURL:k(e,r),JavaScript:h(e,t),Python:g(e,r),Ruby:$(e,r),PHP:b(e,r),Golang:E(e,r)}},s=e=>`import createClient from 'microlink.io'\n\nconst microlink = createClient(${e?`{ apiKey: ${JSON.stringify(e)} }`:""})`,a=["markdown","html","text"],l={emails:{selector:"html",attr:"html",type:"email"},links:{selectorAll:"a",attr:"href",type:"url"},images:{selectorAll:"img",attr:"src",type:"url"}},c=e=>(0,r.A)(new Set(e.map(e=>e.split(".")[0]))),u=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase(),d=e=>{const{apiKey:t,meta:n,filter:r,embed:o,...i}=e,s=((e,t)=>{if("string"==typeof t){const e=t.split(",").map(e=>e.trim()).filter(e=>e&&"insights"!==e);if(e.length>0)return c(e)}if(null!==e&&"object"==typeof e){const t=Object.keys(e).filter(t=>e[t]);if(t.length>0)return c(t)}})(n,r);var d,p,m;if(null!==i.headers&&"object"==typeof i.headers&&(i.headers=(d=i.headers,Object.fromEntries(Object.entries(d).map(([e,t])=>[e.toLowerCase().startsWith("x-api-header-")?e.toLowerCase():`x-api-header-${u(e)}`,t])))),i.screenshot&&i.pdf){const{screenshot:e,pdf:t,...n}=i,r={method:"screenshot",binding:"screenshot",opts:{...!0===e?{}:e,...n}},o={method:"pdf",binding:"pdf",opts:{...!0===t?{}:t,...n}},s=Object.keys(i);return s.indexOf("pdf")<s.indexOf("screenshot")?[o,r]:[r,o]}if(i.screenshot){const{screenshot:e,...t}=i;return[{method:"screenshot",binding:"data",opts:{...!0===e?{}:e,...t}}]}if(i.pdf){const{pdf:e,...t}=i;return[{method:"pdf",binding:"data",opts:{...!0===e?{}:e,...t}}]}if(i.video){const{video:e,...t}=i;return[{method:"video",binding:"data",opts:{...!0===e?{}:e,...t}}]}if(i.audio){const{audio:e,...t}=i;return[{method:"audio",binding:"data",opts:{...!0===e?{}:e,...t}}]}if(i.insights){const{insights:e,...t}=i,n=[];
1return(!0===e||e.technologies)&&n.push({method:"technologies",binding:"technologies",opts:t}),(!0===e||e.lighthouse)&&n.push({method:"lighthouse",binding:"report",opts:t}),0===n.length&&"object"==typeof e&&0===Object.keys(e).length&&n.push({method:"technologies",binding:"technologies",opts:t},{method:"lighthouse",binding:"report",opts:t}),n}if(i.iframe){const{iframe:e,palette:t,...n}=i,r=[{method:"embed",binding:"{ html }",opts:{...!0===e?{}:e,...n}}];return t&&r.push({method:"metadata",binding:"{ image, logo }",opts:{palette:t}}),r}if(i.data){const{data:e,...t}=i;if((e=>{const t=Object.keys(e);if(1!==t.length||!a.includes(t[0]))return!1;const n=e[t[0]];return null!==n&&"object"==typeof n&&n.attr===t[0]&&Object.keys(n).every(e=>"attr"===e||"selector"===e)})(e)){const n=Object.keys(e)[0],{selector:r}=e[n];return[{method:n,binding:n,opts:{...r&&{selector:r},...t}}]}const n=(e=>{const t=Object.keys(e);if(1!==t.length)return null;const n=t[0],r=l[n],o=e[n];return r&&o&&"object"==typeof o&&o.type===r.type?n:null})(e);if(n){return[{method:n,binding:n,opts:{...(p=e[n],m=l[n],Object.fromEntries(Object.entries(p).filter(([e,t])=>t!==m[e]))),...t}}]}return[{method:"extract",binding:`{ ${(s||(o?c([o]):Object.keys(e))).join(", ")} }`,rules:e,opts:t}]}if("string"==typeof i.function){const{function:e,binding:t,...n}=i;return[{method:"function",binding:t||"{ value }",fn:e,opts:n}]}return[{method:"metadata",binding:"data",opts:i}]},p=(e,{method:t,binding:n,fn:r,rules:o,opts:i})=>{const s=Object.keys(i).length>0,a=(e=>`'${String(e).replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r")}'`)(e);if("function"===t){const e=`const ${n} = await microlink.function(${a}, ${r})`;if(!s&&!r.includes("\n")&&e.length<=80)return e;const t=[a,r.split("\n").join("\n  ")];return s&&t.push(f(i,2)),`const ${n} = await microlink.function(\n  ${t.join(",\n  ")}\n)`}if("extract"===t){const e=[a,f(o,0)];return s&&e.push(f(i,0)),`const ${n} = await microlink.extract(${e.join(", ")})`}const l=s?`await microlink.${t}(${a}, ${f(i,0)})`:`await microlink.${t}(${a})`,c=`const ${n} = ${l}`;return!s&&c.length>80?`const ${n} =\n  ${l}`:c},m=(e,t={})=>d(t).map(t=>p(e,t)).join("\n\n"),h=(e,t={})=>`${s(t.apiKey)}\n\n${m(e,t)}`,f=(e,t=0)=>{if(null===e)return"null";if(void 0===e)return"undefined";if("string"==typeof e)return e.includes('"')&&!e.includes("'")?`'${e}'`:e.includes('"')?`"${e.replace(/"/g,'\\"')}"`:`"${e}"`;if("number"==typeof e||"boolean"==typeof e)return String(e);if(Array.isArray(e)){if(0===e.length)return"[]";const n=e.map(e=>f(e,t+2));return`[\n${" ".repeat(t+2)}${n.join(`,\n${" ".repeat(t+2)}`)}\n${" ".repeat(t)}]`}if("object"==typeof e){const n=Object.entries(e);if(0===n.length)return"{}";return`{\n${n.map(([e,n])=>{const r=!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)?`"${e}"`:e,o=f(n,t+2);return`${" ".repeat(t+2)}${r}: ${o}`}).join(",\n")}\n${" ".repeat(t)}}`}return String(e)},g=(e,t={})=>{const{apiKey:n,...r}=t,i={url:e,...y(r)},s=Object.entries(i).map(([e,t])=>{const n=(e=>{const t=String(e);return t.includes('"')||t.includes("'")||t.includes("\\")||t.includes("\n")?`'''${t}'''`:`"${t}"`})(t);return`    "${e}": ${n}`}).join(",\n");let a=`import requests\n\nurl = "${o(n)}/"\n\nquerystring = {\n${s}\n}`;return a+=n?`\n\nheaders = {\n    "x-api-key": "${n}"\n}\n\nresponse = requests.get(url, params=querystring, headers=headers)`:"\n\nresponse = requests.get(url, params=querystring)",a+="\n\nprint(response.json())",a},$=(e,t={})=>{const{apiKey:n,...r}=t,i={url:e,...y(r)},s=Object.entries(i).map(([e,t])=>{const n=(e=>{const t=String(e);return t.includes('"')&&!t.includes("'")?`'${t}'`:t.includes('"')?`"${t.replace(/"/g,'\\"')}"`:`"${t}"`})(t);return`  ${e}: ${n}`}).join(",\n");let a=`require 'uri'\nrequire 'net/http'\n\nbase_url = "${o(n)}/"\n\nparams = {\n${s}\n}\n\nuri = URI(base_url)\nuri.query = URI.encode_www_form(params)\n\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Get.new(uri)`;return n&&(a+=`\nrequest['x-api-key'] = "${n}"`),a+="\nresponse = http.request(request)\n\nputs response.body",a},b=(e,t={})=>{const{apiKey:n,...r}=t,i={url:e,...y(r)},s=Object.entries(i).map(([e,t])=>{const n=(e=>{const t=String(e);return t.includes('"')&&!t.includes("'")?`'${t}'`:t.includes('"')?`"${t.replace(/"/g,'\\"')}"`:`"${t}"`})(t);return`    "${e}" => ${n}`}).join(",\n");let a=`<?php\n\n$baseUrl = "${o(n)}/";\n\n$params = [\n${s}\n];\n\n$query = http_build_query($params);\n$url = $baseUrl . '?' . $query;\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n    CURLOPT_URL => $url,\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_ENCODING => "",\n    CURLOPT_MAXREDIRS => 10,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n    CURLOPT_CUSTOMREQUEST => "GET"`;return n&&(a+=`,\n    CURLOPT_HTTPHEADER => [\n        "x-api-key: ${n}"\n    ]`),a+='\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n    echo "cURL Error #: " . $err;\n} else {\n    echo $response;\n}',a},E=(e,t={})=>{const{apiKey:n,...r}=t,i={url:e,...y(r)},s=[],a=[];
1Object.entries(i).forEach(([e,t],n)=>{const r=String(t);if(r.includes('"')||r.includes("'")||r.includes("\\")||r.includes("\n")){const t="function"===e?"fn":`${e}Param`;s.push(`    ${t} := \`${r}\``),a.push(`    q.Set("${e}", ${t})`)}else a.push(`    q.Set("${e}", "${r}")`)});const l=s.length>0?"\n"+s.join("\n")+"\n":"",c=n?`\n\n    req.Header.Set("x-api-key", "${n}")`:"";return`package main\n\nimport (\n    "fmt"\n    "net/http"\n    "net/url"\n    "io"\n)\n\nfunc main() {\n    baseURL := "${o(n)}"\n\n    u, err := url.Parse(baseURL)\n    if err != nil {\n        panic(err)\n    }${l}\n    q := u.Query()\n${a.join("\n")}\n    u.RawQuery = q.Encode()\n\n    req, err := http.NewRequest("GET", u.String(), nil)\n    if err != nil {\n        panic(err)\n    }${c}\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, err := io.ReadAll(resp.Body)\n    if err != nil {\n        panic(err)\n    }\n\n    fmt.Println(string(body))\n}`},y=(e,t="")=>{const n={};for(const[r,o]of Object.entries(e)){const e=t?`${t}.${r}`:r;null===o||"object"!=typeof o||Array.isArray(o)?n[e]=o:Object.assign(n,y(o,e))}return n},j=(e,t={})=>{const{apiKey:n,...r}=t,o=y(r);return`microlink ${e}${Object.entries(o).flatMap(([e,t])=>{if("boolean"==typeof t)return t?`&${e}`:[];const n=(e=>{const t=String(e);return/[\s"'<>&|;()$`\\]/.test(t)?`'${t.replace(/'/g,"'\"'\"'")}'`:t})(t);return`&${e}=${n}`}).join("")}${n?` --api-key ${n}`:""}`},k=(e,t={})=>{const{apiKey:n,...r}=t,i={url:e,...y(r)},s=[`curl -G "${o(n)}"`];return n&&s.push(`  -H "x-api-key: ${n}"`),Object.entries(i).forEach(([e,t])=>{const n=String(t),r=n.includes(" ")?encodeURIComponent(n):n;s.push(`  -d "${e}=${r}"`)}),s.length>1?s.join(" \\\n"):`curl "${o(n)}?url=${encodeURIComponent(e)}"`}},98868:function(e,t,n){n.d(t,{G:function(){return o}});var r=n(1590);const o=(0,n(7129).Ub)(r.A)}}]);
2//# sourceMappingURL=component---src-templates-index-js-content-file-path-src-content-docs-guides-content-conversion-json-endpoint-to-json-md-49eaa9fb98b5152a93f2.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.