Skip to content

Add Query Parameters to URL

Zero-dependency Python snippets for adding query parameters to URLs using the standard library.

4 snippets available in this sub-category.


Simple

Add new query parameters to URL

url add query params urlencode web

Add new query parameters to URL

from urllib.parse import urlparse, parse_qs, urlencode, urlunparse

def add_query_params(url, params):
    """Add new query parameters to a URL."""
    parsed = urlparse(url)
    query = parse_qs(parsed.query)
    query.update(params)
    new_query = urlencode(query, doseq=True)
    return urlunparse(parsed._replace(query=new_query))

# Example usage
url = 'https://example.com/search?q=python'
new_url = add_query_params(url, {'lang': 'en', 'page': 2})
print(new_url)  # https://example.com/search?q=python&lang=en&page=2

Notes

  • Existing parameters are preserved
  • New parameters are appended

Replace existing query parameters

url replace query params urlencode web

Replace existing query parameters

from urllib.parse import urlparse, parse_qs, urlencode, urlunparse

def replace_query_param(url, key, value):
    """Replace a single query parameter in a URL."""
    parsed = urlparse(url)
    query = parse_qs(parsed.query)
    query[key] = [value]
    new_query = urlencode(query, doseq=True)
    return urlunparse(parsed._replace(query=new_query))

# Example usage
url = 'https://example.com/search?q=python&lang=en'
new_url = replace_query_param(url, 'q', 'ai')
print(new_url)  # https://example.com/search?q=ai&lang=en

Notes

  • Only the specified key is replaced
  • Other parameters remain unchanged

Complex

Add multiple values for a single key

url add query params multi-value urlencode web

Add multiple values for a single key

from urllib.parse import urlparse, parse_qs, urlencode, urlunparse

def add_multi_value_param(url, key, values):
    """Add multiple values for a single query key."""
    parsed = urlparse(url)
    query = parse_qs(parsed.query)
    query[key] = values
    new_query = urlencode(query, doseq=True)
    return urlunparse(parsed._replace(query=new_query))

# Example usage
url = 'https://example.com/search'
new_url = add_multi_value_param(url, 'tag', ['python', 'web', 'snippets'])
print(new_url)  # https://example.com/search?tag=python&tag=web&tag=snippets

Notes

  • doseq=True encodes each value as a separate key

Edge Cases

Add to URL with empty or no query string

url add query params empty urlencode web

Add to URL with empty or no query string

from urllib.parse import urlparse, urlencode, urlunparse

def add_query_to_empty(url, params):
    """Add query parameters to a URL with no query string."""
    parsed = urlparse(url)
    new_query = urlencode(params)
    return urlunparse(parsed._replace(query=new_query))

# Example usage
url = 'https://example.com/'
new_url = add_query_to_empty(url, {'q': 'python'})
print(new_url)  # https://example.com/?q=python

Notes

  • Works even if original URL has no query string

🔗 Cross-References

🏷️ Tags

url, add, query, params, replace, multi-value, empty, web, urlencode

📝 Notes

  • Use urlencode with doseq=True for multi-value keys
  • Always validate and encode user input in URLs
  • For removing or modifying queries, see parse_qs and urlunparse