You can use my ‘ChatGPT Search Query Extractor’ bookmarklet to easily view search queries in any ChatGPT conversation that grounds its response using a web search (with Bing search engine). The extracted questions are opened in a new tab and are presented in a clean, organized format, and includes a copy to clipboard functionality.
It’s perfect for SEOs, researchers, content creators, and anyone who wants to reuse or analyse the search strategies ChatGPT employed.
Drag the bookmarklet below to your bookmarks bar:
ChatGPT Search Query Extractor

How to Use
Open a ChatGPT conversation
Navigate to any ChatGPT conversation that used web search (you’ll see search results in the conversation)
Click your bookmarklet
Click the bookmarklet you just installed from your bookmarks bar
View extracted queries
A new tab will open showing all the search queries ChatGPT used, formatted beautifully
Copy to clipboard
Click the “Copy All” button to copy all queries to your clipboard for use in Excel, Google Sheets, or anywhere else
Bookmarklet Code:
javascript:(async()=>{try{const cid=location.pathname.match(/\/c\/([^/]+)/)?.[1];if(!cid){alert(%27Open a ChatGPT conversation first.%27);return;}const sess=await fetch(%27/api/auth/session%27).then(r=>r.json());const res=await fetch(`/backend-api/conversation/${cid}`,{headers:{%27Authorization%27:%27Bearer %27+sess.accessToken,%27Content-Type%27:%27application/json%27}});const data=await res.json();const queries=new Set();const extractQueries=(obj)=>{if(typeof obj!==%27object%27||obj===null)return;if(Array.isArray(obj.search_queries)){obj.search_queries.forEach(sq=>{if(sq.q)queries.add(sq.q);});}if(obj.metadata&&Array.isArray(obj.metadata.search_queries)){obj.metadata.search_queries.forEach(sq=>{if(sq.q)queries.add(sq.q);});}for(const key in obj){if(key!==%27search_queries%27&&key!==%27metadata%27){extractQueries(obj[key]);}}};extractQueries(data);const uniqueQueries=Array.from(queries);if(uniqueQueries.length===0){alert(%27No search queries found in this conversation.%27);return;}const newTab=window.open(%27%27,%27_blank%27);const doc=newTab.document;doc.open();doc.close();const style=doc.createElement(%27style%27);style.textContent=`body{font-family:-apple-system,BlinkMacSystemFont,%27Segoe UI%27,Roboto,sans-serif;max-width:800px;margin:40px auto;padding:20px;background:#f8fafc;line-height:1.6;}.header{display:flex;align-items:center;gap:15px;margin-bottom:20px;}.clipboard-btn{background:#4299e1;color:white;border:none;padding:8px 12px;border-radius:6px;cursor:pointer;font-size:14px;transition:all 0.2s;display:flex;align-items:center;gap:6px;}.clipboard-btn:hover{background:#3182ce;transform:translateY(-1px);}.clipboard-btn:active{background:#2c5282;transform:translateY(0);}.clipboard-icon{width:16px;height:16px;}.success-toast{position:fixed;top:20px;right:20px;background:#48bb78;color:white;padding:12px 20px;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,0.15);opacity:0;transform:translateX(100%);transition:all 0.3s ease;z-index:1000;}.success-toast.show{opacity:1;transform:translateX(0);}h1{color:#2d3748;border-bottom:3px solid #4299e1;padding-bottom:10px;margin:0;}p{color:#718096;margin-bottom:30px;font-size:16px;}.query-item{background:white;margin:15px 0;padding:20px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,0.1);border-left:4px solid #4299e1;transition:all 0.2s;}.query-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,0.15);}.count{color:#718096;font-size:14px;margin-bottom:8px;font-weight:500;}.query-text{font-family:Monaco,Menlo,'Ubuntu Mono',monospace;color:#2d3748;font-size:15px;background:#f7fafc;padding:10px;border-radius:4px;border:1px solid #e2e8f0;}%60;doc.head.appendChild(style);const toast=doc.createElement('div');toast.className='success-toast';toast.id='successToast';toast.textContent='Queries copied to clipboard! 📋';doc.body.appendChild(toast);const container=doc.createElement('div');const header=doc.createElement('div');header.className='header';const title=doc.createElement('h1');title.textContent='ChatGPT Grounded Search Queries';const clipboardBtn=doc.createElement('button');clipboardBtn.className='clipboard-btn';clipboardBtn.innerHTML=%60Copy All%60;clipboardBtn.addEventListener('click',()=>{const text=uniqueQueries.join('\n');navigator.clipboard.writeText(text).then(()=>{toast.classList.add('show');setTimeout(()=>toast.classList.remove('show'),3000);}).catch(()=>{const textArea=doc.createElement('textarea');textArea.value=text;doc.body.appendChild(textArea);textArea.select();doc.execCommand('copy');doc.body.removeChild(textArea);toast.classList.add('show');setTimeout(()=>toast.classList.remove('show'),3000);});});header.appendChild(title);header.appendChild(clipboardBtn);container.appendChild(header);const description=doc.createElement('p');description.textContent=%60Found ${uniqueQueries.length} search ${uniqueQueries.length===1?'query':'queries'} in this conversation:%60;container.appendChild(description);uniqueQueries.forEach((q,i)=>{const item=doc.createElement('div');item.className='query-item';item.innerHTML=%60${q}%60;container.appendChild(item);});doc.body.appendChild(container);}catch(e){alert('Could not fetch conversation data. Make sure you are logged in to ChatGPT.');console.error(e);}})();