Documentation Python quickstart Blog Free tools hello@quanticdata.ioLog in

Flickr Proxies: 145 Words, No Browser

What a Flickr URL costs to read through a proxy, measured on 28 September 2026: the photostream returns 145 words over plain HTTP in 663,499 bytes and the same 145 words rendered in 2,005,256 bytes, a photo page returns the caption, view count and licence in 536,306 bytes, and the oEmbed endpoint answers in 1,189 bytes with no key
What a Flickr URL costs to read through a proxy, measured on 28 September 2026: the photostream returns 145 words over plain HTTP in 663,499 bytes and the same 145 words rendered in 2,005,256 bytes, a photo page returns the caption, view count and licence in 536,306 bytes, and the oEmbed endpoint answers in 1,189 bytes with no key

Flickr is the largest public archive of licensed photographs on the web, and it is one of the few platforms in this series where the browser buys nothing at all. On 28 September 2026 we fetched it twenty-one times through residential exits in the United States, Germany and Japan. A public photostream returned 145 words to a plain HTTP client and exactly 145 words to a full browser, for 663,499 bytes against 2,005,256. A single photo page carried the caption, the view count and the licence in plain HTML for 536,306 bytes. And the oEmbed endpoint answered with no key at all in 1,189 bytes.

Nobody searches for this, and that is why nobody measures it

Search for Flickr proxies and Google has nothing to suggest: the autocomplete box is empty for the head term and for "proxies for flickr". The results page is not about proxies either. It is a Flickr group literally named "proxy" with 227 photos in it, a forum thread about an image proxy breaking Flickr embeds, two photostreams whose owners happen to be called "high proxies" and "Printing Proxies", a 2007 blog post about reaching Flickr from China, and two vendor pages, one of which redirects to a generic social-media page and the other of which sells mobile lines for managing accounts.

The intent that does exist sits under other words. "Flickr api" returns fifteen suggestions, led by "flickr api key", "flickr api pricing" and "flickr api rate limit". "Flickr scraper" returns three, including "flickr ai scraping". So the people arriving here want two things: to read public photo data at volume, and to know what Flickr allows. Both have numeric answers, and neither appears on that results page.

A photostream is 145 words with or without a browser

We audited flickr.com/photos/nasahqphoto/, the public photostream of NASA HQ Photo with 33,188 pictures, from three countries, each time once as a pure HTTP client and once fully rendered.

ExitPlain HTTP wordsRendered wordsPlain HTTP bytesMeta description
United States145145663,499Explore NASA HQ PHOTO’s 33,188 photos on Flickr!
Germany142142663,703Entdecke NASA HQ PHOTOs 33.188 Fotos auf Flickr!
Japan145145663,464Explore NASA HQ PHOTO’s 33,188 photos on Flickr!

Six passes, one shape. The title, the h1, the canonical link and the description are server-rendered and identical in both views, and the audit found four JSON-LD blocks in the plain HTML: WebSite, Organization, Person and BlogPosting. The page also carries robots: noarchive, which tells search engines not to keep a cached copy but says nothing about reading it.

What the browser adds is the photo grid, and it adds it expensively. A full render from the US cost 2,005,256 bytes and 10.5 seconds; the audit still counted 145 words, and even a generous text extraction that keeps every injected photo title reached 933 words. That is three times the bytes for a list of titles that each photo page hands you anyway, together with the fields the grid never shows.

The photo page carries the caption, the counters and the licence in plain HTML

The unit of value on Flickr is the photo page, not the stream. We fetched one over plain HTTP, /photos/nasahqphoto/55541281672/, and it answered in 536,306 bytes and 2.3 seconds with everything a catalogue needs: the full caption (a 96-word press description with the photographer credit), the counters (3,088 views, 2 faves, 0 comments), the upload date and the capture date, and the licence, both as the words "Some rights reserved" and as structured data:

{ "@type": "ImageObject",
  "contentUrl": "https://live.staticflickr.com/65535/55541281672_37da73d6be_b.jpg",
  "license": "https://creativecommons.org/licenses/by-nc-nd/4.0/",
  "acquireLicensePage": "https://www.flickr.com/photos/nasahqphoto/55541281672",
  "author": { "@type": "Person", "name": "NASA HQ PHOTO" } }

That block is the reason this platform is worth reading at all. The licence URL is machine-readable, it is in the first response, and it is the field that decides whether you may use the picture. A BreadcrumbList sits next to it with the owner and the photo title, so a parser that reads two JSON-LD objects has the owner, the title, the licence and the full-size URL without touching the DOM.

oEmbed answers in 1,189 bytes with no key

Flickr's oEmbed endpoint is open. We called it with the photostream URL and no credentials:

GET https://www.flickr.com/services/oembed/?url=https%3A%2F%2Fwww.flickr.com%2Fphotos%2Fnasahqphoto%2F&format=json

{ "type": "rich", "flickr_type": "photostream",
  "title": "NASA HQ PHOTO", "author_name": "NASA HQ PHOTO",
  "thumbnail_url": "https://live.staticflickr.com/65535/55541281672_37da73d6be_b.jpg",
  "license_url": "https://creativecommons.org/licenses/by-nc-nd/4.0/",
  "cache_age": 3600, "provider_name": "Flickr" }

1,189 bytes, 1.6 seconds, no key. For a photostream it returns the owner, the canonical URL, the licence and the most recent photo, which is how we found the photo page above. For a photo URL it returns the title, the author and the embed. What it does not return is any counter: no views, no faves, no comments. If you need those, the photo page is the source, at 451 times the bytes.

The REST API is the opposite case. Without a key, flickr.people.getInfo answers in 79 bytes: {"stat":"fail","code":100,"message":"Invalid API Key"}. With a key, Flickr's Developer Guide states the ceiling in one sentence: stay under 3,600 queries per hour across the whole key, aggregated over every user of your integration, and results may be cached for up to 24 hours. That is one query per second per key, which is the number to size against.

The exit country rewrites the number format, not the data

Three exits, three near-identical pages, one difference that breaks parsers. From the German exit Flickr localised the description off the IP alone, with no Accept-Language header sent: "Explore NASA HQ PHOTO’s 33,188 photos" became "Entdecke NASA HQ PHOTOs 33.188 Fotos". The count is the same; the thousands separator is a full stop. From Japan the page stayed in English with the comma. Word counts moved by three, from 145 to 142, because the German chrome is shorter.

int(re.sub(r"[^\d]", "", "33.188"))          # 33188, correct
int(re.match(r"[\d,]+", "33.188").group())    # 33  <-- silent, wrong on every DE exit

Two things follow. First, on Flickr a rotating pool that mixes countries produces mixed number formats inside one job, and the failure is silent. Second, this is a formatting effect, not a content effect: the photos, the licences and the counters are identical from all three countries, so geo targeting on this platform is a parsing decision rather than a data decision. Pin one exit country per job, or strip every separator before converting, and never match on translated labels.

What robots.txt and the Developer Guide say

flickr.com/robots.txt is 2,210 bytes and it is a whitelist. Forty-five named user agents share one block with nineteen path exclusions (search, lightboxes, a few specific accounts). The list is worth reading for who is on it: alongside Googlebot, bingbot and the link unfurlers sit ChatGPT-User, OAI-SearchBot, Claude-User, Claude-SearchBot and PerplexityBot. The training crawlers GPTBot and ClaudeBot are not named at all, so they fall under the final rule, which is also the one that governs your client:

User-agent: *
Disallow: /

Then six sitemap indexes: users, tags, sets, photos, groups and cameras. Flickr publishes a map of its public content, admits the assistants that fetch on a user's behalf, and tells unnamed clients to stay out.

The Developer Guide is blunter than the robots file. Its best-practices list says screen scraping flickr.com is not the way, that the API is the scalable route, and that clients doing it get cut off. The API Terms of Use add the conditions that matter for a data product: display no more than 30 user photos per page, cache photos only for reasonable periods, remove anything the owner asks to remove within 24 hours, and never use the API to support surveillance of Flickr users. The photographs belong to the photographers, and commercial use of one requires a Creative Commons licence that allows it. Read public photostreams for research, brand and licence monitoring and attribution checks; for anything at volume, get a key and stay under 3,600 an hour.

What a gigabyte buys, and where the API wins

Nothing in twenty-one fetches looked at the address. Every response was a 200 from a rotating residential exit on the first attempt, from three countries, with no difference between them beyond the number format above. The cost driver on Flickr is bytes, and the arithmetic below uses residential proxies on the Basic line at $0.80/GB, counting a gigabyte as 10^9 bytes.

RequestBytesRequests per GBCost per request
Photostream, plain HTTP663,4991,507$0.00053
Photostream, rendered2,005,256499$0.00160
Photo page, plain HTTP536,3061,865$0.00043
oEmbed, no key1,189841,043$0.000001

Put a real job through it. Reading 100,000 photo pages a day for a month moves 3,000,000 pages and 1,609 GB, about $1,287 on residential Basic, and it returns captions, counters and licences. The same 3,000,000 lookups through oEmbed move 3.6 GB and cost about $2.85, and they return titles, authors and licences but no counters. The rendered route is the one to strike out: it costs three times the photostream bytes for the same 145 words and adds nothing the photo pages do not already carry. On Mastodon the same comparison came out at $0.76 against $555 for a month of profiles; the shape of the answer is the same here. Read the page that has the data, not the page that lists it.

The setting that works on Flickr

  • Network: residential proxies, Basic line, $0.80/GB, rotating. Twenty-one fetches from three countries met no address-level obstacle; the pool is for throughput and for the one-query-per-second-per-key ceiling on the API, not for trust. Mobile at $2.30/GB and ISP at $2.50/IP per month buy nothing we could measure here.
  • Fetch mode: engine: tls, plain HTTP, never rendered. The photostream returns 145 words either way; the photo page returns the caption, the counters and the ImageObject licence block in 536,306 bytes; oEmbed returns the owner and the licence in 1,189 bytes.
  • Country: pin one, any one, per job. The data is identical from the United States, Germany and Japan; only the number format changes, and a German exit writes 33,188 as "33.188". Mixing exits inside a job mixes formats.
  • When the proxy is not enough: there is no Flickr collector in our catalogue, and the pages do not need one. The web scraping API without rendering returns each photo page as clean Markdown or JSON from $0.0002 per page, retries and rotation included, and failed requests are never billed. For discovery across the open web rather than one photostream, the image search collector returns Google Images results with the source page and host per row. For volume on Flickr itself, the licensed route is a key at 3,600 queries an hour.
  • Free tier: every account gets $2 of free API usage per month, which is 10,000 photo pages through the scraping API before you pay anything.

Read the photo pages over plain HTTP, take the licence from the JSON-LD, use oEmbed when the owner and the licence are all you need, and skip the browser. That is the whole configuration. For the platform in this series where the public API also made the browser unnecessary, see Bluesky; for the one where rendering was the only way to read anything, see TikTok.

Sources & further reading

FAQ

Quick answers on flickr proxies.

Something else? Ask us →

Do I need a headless browser to scrape Flickr?

No. On 28 September 2026 a public photostream returned 145 words to a plain HTTP client and 145 words to a full browser, from the United States, Germany and Japan alike. The render cost 2,005,256 bytes and 10.5 seconds against 663,499 bytes over plain HTTP, and the photo pages, which carry the caption, the counters and the licence, are server-rendered at 536,306 bytes each.

Does Flickr have a public API that works without a key?

One endpoint does. The oEmbed service at /services/oembed/ answered a photostream URL with no credentials in 1,189 bytes, returning the owner, the canonical URL, the licence URL and the latest photo, with a cache_age of 3600 seconds. The REST API does not: flickr.people.getInfo without a key answers in 79 bytes with error code 100, Invalid API Key.

What is the Flickr API rate limit?

3,600 queries per hour per key, aggregated across every user of your integration, according to the Flickr Developer Guide, which also allows caching API results and images for up to 24 hours. That is one query per second per key. Keys that exceed it or that are used for screen scraping are expired or switched off.

Does the exit country change what Flickr returns?

Only the formatting. From a German residential exit the description read "33.188 Fotos" instead of "33,188 photos", with no Accept-Language header sent; from Japan the page stayed in English. Word counts moved from 145 to 142. Photos, licences and counters were identical from all three countries, so pin one exit per job for consistent number parsing rather than for different data.

Does Flickr allow scraping?

robots.txt names 45 agents that may crawl and ends with User-agent: * Disallow: /, so an unnamed client is not on the list. The Developer Guide says screen scraping is not the way and that the API is the scalable route, and the API Terms of Use require honouring each photo’s licence, showing no more than 30 photos per page and removing content within 24 hours of an owner’s request. Read public pages for research and licence checks; for volume, use a key.

What does it cost to read 100,000 Flickr photo pages a day?

At 536,306 bytes per page, 100,000 pages a day are 53.6 GB a day and about 1,609 GB a month, roughly $1,287 on residential Basic at $0.80/GB, counting a gigabyte as 10^9 bytes. The same 3,000,000 lookups through oEmbed move 3.6 GB and cost about $2.85, returning titles, authors and licences but no view or fave counts.

Read the photo page, skip the browser

Every number here came from one platform: fetch any Flickr URL over plain HTTP or rendered, compare the two views, and see what each byte returns. Every account gets $2 of free API usage each month, and failed requests are never billed.

Related reading

Social proxiesNextdoor Proxies: 2,404 Words, No Login

Nineteen fetches of Nextdoor on 28 September 2026 from the United States, Canada and the United Kingdom. A public city page returns 2,404 words to a plain HTTP client, identical from all three countries: resident counts, six neighbour conversations, 1,147 groups, marketplace listings with prices and 44 events. Rendering the same URL costs 1,046,614 bytes and returns 322 fewer words. Here is the whole measurement, the two paths robots.txt leaves open, and where Nextdoor’s own Display API takes over.

Read →
Social proxiesStrava Proxies: 117 Words Without a Login

Twenty-one fetches of Strava on 28 September 2026 from the United States, Germany and Italy. A public segment page returns 117 words to a logged-out client: the segment name, sport and location in the title, and a sign-in prompt in the body, from any country and with or without a browser. The club page is the one public surface with data: 7,284,511 members and twenty dated posts in 963,234 bytes over plain HTTP. The API needs OAuth and documents its own limits. Here is the whole measurement and the sentence in Strava’s terms that governs all of it.

Read →
Social proxiesXING Proxies: 2,514 Words Without a Browser

Twenty-two fetches of XING on 28 September 2026 from Germany, Austria and the United States. A public company page returns 2,514 words to a plain HTTP client, byte-identical from Germany and Austria, with follower count, headcount band, news, twelve job ads and named employees. A member profile returns 679 words and a complete Person JSON-LD block with every role and start date. Rendering the company page costs 1,511,542 bytes for 394 extra words of interface. Here is the whole measurement, what robots.txt closes, and the one line about personal data.

Read →