URL context

You can use the URL context tool to provide Gemini with URLs as additional context for your prompt. The model can then retrieve content from the URLs and use that content to inform and shape its response.

This tool is useful for tasks like the following:

  • Extracting key data points or talking points from articles
  • Comparing information across multiple links
  • Synthesizing data from several sources
  • Answering questions based on the content of a specific page or pages
  • Analyzing content for specific purposes (like writing a job description or creating test questions)

This guide explains how to use the URL context tool in the Gemini API in Vertex AI.

Supported models

The following models provide support for URL Context:

Use URL context

You can use the URL context tool in two main ways, by itself or in conjunction with Grounding with Google Search .

URL context only

You can provide specific URLs that you want the model to analyze directly in your prompt:

 Summarize this document: YOUR_URLs 
Extract the key features from the product description on this page: YOUR_URLs 
 

Python

  from 
  
 google 
  
 import 
 genai 
 from 
  
 google.genai.types 
  
 import 
 Tool 
 , 
 GenerateContentConfig 
 , 
 HttpOptions 
 , 
 UrlContext 
 client 
 = 
 genai 
 . 
 Client 
 ( 
 http_options 
 = 
 HttpOptions 
 ( 
 api_version 
 = 
 "v1" 
 )) 
 model_id 
 = 
 "gemini-2.5-flash" 
 url_context_tool 
 = 
 Tool 
 ( 
 url_context 
 = 
 UrlContext 
 ) 
 response 
 = 
 client 
 . 
 models 
 . 
 generate_content 
 ( 
 model 
 = 
 model_id 
 , 
 contents 
 = 
 "Compare recipes from YOUR_URL1 
and YOUR_URL2 
" 
 , 
 config 
 = 
 GenerateContentConfig 
 ( 
 tools 
 = 
 [ 
 url_context_tool 
 ], 
 response_modalities 
 = 
 [ 
 "TEXT" 
 ], 
 ) 
 ) 
 for 
 each 
 in 
 response 
 . 
 candidates 
 [ 
 0 
 ] 
 . 
 content 
 . 
 parts 
 : 
 print 
 ( 
 each 
 . 
 text 
 ) 
 # get URLs retrieved for context 
 print 
 ( 
 response 
 . 
 candidates 
 [ 
 0 
 ] 
 . 
 url_context_metadata 
 ) 
 

Javascript

  # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values 
 # with appropriate values for your project. 
 export 
  
 GOOGLE_CLOUD_PROJECT 
 = 
GOOGLE_CLOUD_PROJECT export 
  
 GOOGLE_CLOUD_LOCATION 
 = 
global export 
  
 GOOGLE_GENAI_USE_VERTEXAI 
 = 
True 
  import 
  
 { 
  
 GoogleGenAI 
  
 } 
  
 from 
  
 "@google/genai" 
 ; 
 const 
  
 ai 
  
 = 
  
 new 
  
 GoogleGenAI 
 ({ 
  
 vertexai 
 : 
  
 true 
 , 
  
 project 
 : 
  
 process 
 . 
 env 
 . 
 GOOGLE_CLOUD_PROJECT 
 , 
  
 location 
 : 
  
 process 
 . 
 env 
 . 
 GOOGLE_CLOUD_LOCATION 
 , 
  
 apiVersion 
 : 
  
 'v1' 
 , 
 }); 
 async 
  
 function 
  
 main 
 () 
  
 { 
  
 const 
  
 response 
  
 = 
  
 await 
  
 ai 
 . 
 models 
 . 
 generateContent 
 ({ 
  
 model 
 : 
  
 "gemini-2.5-flash" 
 , 
  
 contents 
 : 
  
 [ 
  
 "Compare recipes from YOUR_URL1 
and YOUR_URL2 
" 
 , 
  
 ], 
  
 config 
 : 
  
 { 
  
 tools 
 : 
  
 [{ 
 urlContext 
 : 
  
 {}}], 
  
 }, 
  
 }); 
  
 console 
 . 
 log 
 ( 
 response 
 . 
 text 
 ); 
  
 // To get URLs retrieved for context 
  
 console 
 . 
 log 
 ( 
 response 
 . 
 candidates 
 [ 
 0 
 ]. 
 urlContextMetadata 
 ) 
 } 
 await 
  
 main 
 (); 
 

REST

 curl  
-X  
POST  
 \ 
  
-H  
 "Authorization: Bearer 
 $( 
gcloud  
auth  
print-access-token ) 
 " 
  
 \ 
  
-H  
 "Content-Type: application/json" 
  
 \ 
  
https://aiplatform.googleapis.com/v1beta1/projects/ GOOGLE_CLOUD_PROJECT 
/locations/global/publishers/google/models/gemini-2.5-flash:generateContent  
 \ 
  
-d  
 '{ 
 "contents": [ 
 { 
 "role": "user", 
 "parts": [ 
 {"text": "Compare recipes from YOUR_URL1 
and YOUR_URL2 
"} 
 ] 
 } 
 ], 
 "tools": [ 
 { 
 "url_context": {} 
 } 
 ] 
 }' 
 > 
result.json

cat  
result.json 

Grounding with Google Search with URL context

You can also enable both URL context and Grounding with Google Search together. You can enter a prompt with or without URLs. The model may first search for relevant information and then use the URL context tool to read the content of the search results for a more in-depth understanding.

This feature is experimental and available in API version v1beta1 .

Example prompts:

 Give me a three day event schedule based on YOUR_URL 
. Also let me know what needs to taken care of considering weather and commute.

Recommend 3 books for beginners to read to learn more about the latest YOUR_SUBJECT 
. 

Python

  from 
  
 google 
  
 import 
 genai 
 from 
  
 google.genai.types 
  
 import 
 Tool 
 , 
 GenerateContentConfig 
 , 
 HttpOptions 
 , 
 UrlContext 
 , 
 GoogleSearch 
 client 
 = 
 genai 
 . 
 Client 
 ( 
 http_options 
 = 
 HttpOptions 
 ( 
 api_version 
 = 
 "v1beta1" 
 )) 
 model_id 
 = 
 "gemini-2.5-flash" 
 tools 
 = 
 [] 
 tools 
 . 
 append 
 ( 
 Tool 
 ( 
 url_context 
 = 
 UrlContext 
 )) 
 tools 
 . 
 append 
 ( 
 Tool 
 ( 
 google_search 
 = 
 GoogleSearch 
 )) 
 response 
 = 
 client 
 . 
 models 
 . 
 generate_content 
 ( 
 model 
 = 
 model_id 
 , 
 contents 
 = 
 "Give me three day events schedule based on YOUR_URL 
. Also let me know what needs to taken care of considering weather and commute." 
 , 
 config 
 = 
 GenerateContentConfig 
 ( 
 tools 
 = 
 tools 
 , 
 response_modalities 
 = 
 [ 
 "TEXT" 
 ], 
 ) 
 ) 
 for 
 each 
 in 
 response 
 . 
 candidates 
 [ 
 0 
 ] 
 . 
 content 
 . 
 parts 
 : 
 print 
 ( 
 each 
 . 
 text 
 ) 
 # get URLs retrieved for context 
 print 
 ( 
 response 
 . 
 candidates 
 [ 
 0 
 ] 
 . 
 url_context_metadata 
 ) 
 

Javascript

  # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values 
 # with appropriate values for your project. 
 export 
  
 GOOGLE_CLOUD_PROJECT 
 = 
GOOGLE_CLOUD_PROJECT export 
  
 GOOGLE_CLOUD_LOCATION 
 = 
global export 
  
 GOOGLE_GENAI_USE_VERTEXAI 
 = 
True 
  import 
  
 { 
  
 GoogleGenAI 
  
 } 
  
 from 
  
 "@google/genai" 
 ; 
 const 
  
 ai 
  
 = 
  
 new 
  
 GoogleGenAI 
 ({ 
  
 vertexai 
 : 
  
 true 
 , 
  
 project 
 : 
  
 process 
 . 
 env 
 . 
 GOOGLE_CLOUD_PROJECT 
 , 
  
 location 
 : 
  
 process 
 . 
 env 
 . 
 GOOGLE_CLOUD_LOCATION 
 , 
  
 apiVersion 
 : 
  
 'v1beta1' 
 , 
 }); 
 async 
  
 function 
  
 main 
 () 
  
 { 
  
 const 
  
 response 
  
 = 
  
 await 
  
 ai 
 . 
 models 
 . 
 generateContent 
 ({ 
  
 model 
 : 
  
 "gemini-2.5-flash" 
 , 
  
 contents 
 : 
  
 [ 
  
 "Give me a three day event schedule based on YOUR_URL 
. Also let me know what needs to taken care of considering weather and commute." 
 , 
  
 ], 
  
 config 
 : 
  
 { 
  
 tools 
 : 
  
 [{ 
 urlContext 
 : 
  
 {}}, 
  
 { 
 googleSearch 
 : 
  
 {}}], 
  
 }, 
  
 }); 
  
 console 
 . 
 log 
 ( 
 response 
 . 
 text 
 ); 
  
 // To get URLs retrieved for context 
  
 console 
 . 
 log 
 ( 
 response 
 . 
 candidates 
 [ 
 0 
 ]. 
 urlContextMetadata 
 ) 
 } 
 await 
  
 main 
 (); 
 

REST

 curl  
-X  
POST  
 \ 
  
-H  
 "Authorization: Bearer 
 $( 
gcloud  
auth  
print-access-token ) 
 " 
  
 \ 
  
-H  
 "Content-Type: application/json" 
  
 \ 
  
https://aiplatform.googleapis.com/v1beta1/projects/ GOOGLE_CLOUD_PROJECT 
/locations/global/publishers/google/models/gemini-2.5-flash:generateContent  
 \ 
  
-d  
 '{ 
 "contents": [ 
 { 
 "role": "user", 
 "parts": [ 
 {"text": "Give me a three day event schedule based on YOUR_URL 
. Also let me know what needs to taken care of considering weather and commute."} 
 ] 
 } 
 ], 
 "tools": [ 
 { 
 "url_context": {} 
 }, 
 { 
 "google_search": {} 
 } 
 ] 
 }' 
 > 
result.json

cat  
result.json 

For more details about Grounding with Google Search, see the overview page.

Contextual response

The model's response will be based on the content it retrieved from the URLs. If the model retrieved content from URLs, the response will include url_context_metadata . Such a response might look something like the following (parts of the response have been omitted for brevity):

  { 
  
 "candidates" 
 : 
  
 [ 
  
 { 
  
 "content" 
 : 
  
 { 
  
 "parts" 
 : 
  
 [ 
  
 { 
  
 "text" 
 : 
  
 "... \n" 
  
 } 
  
 ], 
  
 "role" 
 : 
  
 "model" 
  
 }, 
  
 ... 
  
 "url_context_metadata" 
 : 
  
 { 
  
 "url_metadata" 
 : 
  
 [ 
  
 { 
  
 "retrieved_url" 
 : 
  
 "https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/code-execution" 
 , 
  
 "url_retrieval_status" 
 : 
  
< UrlRe 
 tr 
 ievalS 
 tatus 
 .URL_RETRIEVAL_STATUS_SUCCESS 
 : 
  
 "URL_RETRIEVAL_STATUS_SUCCESS" 
>  
 }, 
  
 { 
  
 "retrieved_url" 
 : 
  
 "https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-search" 
 , 
  
 "url_retrieval_status" 
 : 
  
< UrlRe 
 tr 
 ievalS 
 tatus 
 .URL_RETRIEVAL_STATUS_SUCCESS 
 : 
  
 "URL_RETRIEVAL_STATUS_SUCCESS" 
>  
 }, 
  
 ] 
  
 } 
  
 } 
  
 ] 
 } 
 

Limitations

  • The tool will consume up to 20 URLs per request for analysis.
  • The tool does not fetch live versions of web pages, so there may be some issues with freshness or potentially out-of-date information.
  • For best results during experimental phase, use the tool on standard web pages rather than multimedia content such as YouTube videos.
Create a Mobile Website
View Site in Mobile | Classic
Share by: