{"id":13820794,"url":"https://github.com/jg-l/metadata_fetch","last_synced_at":"2026-02-22T03:42:21.787Z","repository":{"id":37730004,"uuid":"241696258","full_name":"jg-l/metadata_fetch","owner":"jg-l","description":"A dart library for extracting metadata in web pages. Supports Open Graph, Meta, Twitter Cards, and Structured Data (Json-LD)","archived":false,"fork":false,"pushed_at":"2024-09-10T03:22:05.000Z","size":57,"stargazers_count":45,"open_issues_count":18,"forks_count":74,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-23T07:31:56.713Z","etag":null,"topics":["dart","extract-metadata","flutter","meta","metadata","opengraph","parse","structured-data","twitter-cards"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jg-l.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-19T18:39:05.000Z","updated_at":"2024-12-04T14:36:01.000Z","dependencies_parsed_at":"2024-01-15T15:13:15.376Z","dependency_job_id":"2f713880-6af1-419d-9c1b-ad452430cef8","html_url":"https://github.com/jg-l/metadata_fetch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jg-l/metadata_fetch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jg-l%2Fmetadata_fetch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jg-l%2Fmetadata_fetch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jg-l%2Fmetadata_fetch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jg-l%2Fmetadata_fetch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jg-l","download_url":"https://codeload.github.com/jg-l/metadata_fetch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jg-l%2Fmetadata_fetch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29704419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T03:17:42.375Z","status":"ssl_error","status_checked_at":"2026-02-22T03:17:31.622Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","extract-metadata","flutter","meta","metadata","opengraph","parse","structured-data","twitter-cards"],"created_at":"2024-08-04T08:01:09.185Z","updated_at":"2026-02-22T03:42:21.772Z","avatar_url":"https://github.com/jg-l.png","language":"Dart","funding_links":[],"categories":["Dart"],"sub_categories":[],"readme":"# Metadata Fetch\nA dart library for extracting metadata in web pages. Supports OpenGraph, Meta, Twitter Cards, and Structured Data (Json-LD)\n\nAvailable on Pub Dev:\n[Pub](https://pub.dev/packages/metadata_fetch)\n\n## Metadata Structure\n\n```yaml\nMetadata:\n  - title\n  - description\n  - image\n  - url\n```\n\n## Usage\n\n\n### Extract Metadata for a given URL\n\n```dart\nimport 'package:metadata_fetch/metadata_fetch.dart';\n\nmain() async {\n  final myURL = 'https://flutter.dev';\n\n  // Use the `MetadataFetch.extract()` function to fetch data from the url\n  var data = await MetadataFetch.extract(myURL); \n\n  print(data.title) // Flutter - Beautiful native apps in record time\n\n  print(data.description) // Flutter is Google's UI toolkit for crafting beautiful...\n\n  print(data.image) // https://flutter.dev/images/flutter-logo-sharing.png\n\n  print(data.url) // https://flutter.dev/\n\n  var dataAsMap = data.toMap();\n\n\n}\n```\n\n### Parsing Manually\n\n#### Get aggregated Metadata from a document\n\nThis method prioritizes Open Graph data, followed by Twitter Card, JSON-LD and finally falls back to HTML metadata.\n\n\n```dart\nimport 'package:metadata_fetch/metadata_fetch.dart';\nimport 'package:http/http.dart' as http;\n\nvoid main () async {\n\n  final myURL = 'https://flutter.dev';\n\n  // makes a call\n  var response = await http.get(myURL);\n\n  // Convert Response to a Document. The utility function `MetadataFetch.responseToDocument` is provided or you can use own decoder/parser.\n  var document = MetadataFetch.responseToDocument(response);\n\n\n  // get aggregated metadata\n  var data = MetadataParser.parse(document);\n  print(data);\n\n\n}\n\n```\n\n#### Manually specify which Metadata parser to use\n\n```dart\nimport 'package:metadata_fetch/metadata_fetch.dart';\nimport 'package:http/http.dart' as http;\n\nvoid main () async {\n\n  final myURL = 'https://flutter.dev';\n\n  // Makes a call\n  var response = await http.get(myURL);\n\n  // Convert Response to a Document. The utility function `responseToDocument` is provided or you can use own decoder/parser.\n  var document = responseToDocument(response);\n\n\n  // Get OpenGraph Metadata\n  var ogData = MetadataParser.OpenGraph(document);\n  print(ogData);\n\n  // Get Html metadata\n  var htmlData = MetadataParser.HtmlMeta(document);\n  print(htmlData);\n\n  // Get Structured Data\n  var structuredData = MetadataParser.JsonLdSchema(document);\n  print(structuredData);\n\n  // Get Twitter Cards Data\n  var  twitterCardData = MetadataParser.TwitterCard(document);\n  print(twitterCardData);\n\n}\n```\n\n#### Provide a fallback url when manually parsing\n\nIf the parsers cannot extract a URL from the document, you may optionally provide a URL in `MetadataFetch.parse()`. \n\nThis URL will be added in the final `Metadata` structure, and is used to resolve images with relative URLs (non-absolute URLs).\n\n```dart\nimport 'package:metadata_fetch/metadata_fetch.dart';\nimport 'package:http/http.dart' as http;\n\nvoid main () async {\n\n  final myURL = 'https://flutter.dev';\n\n  // makes a call\n  var response = await http.get(myURL);\n\n  // Convert Response to a Document. The utility function `MetadataFetch.responseToDocument` is provided or you can use own decoder/parser.\n  var document = MetadataFetch.responseToDocument(response);\n\n\n  // get aggregated metadata, supplying a fallback URL\n  // Used for images with relative URLs\n  var data = MetadataParser.parse(document, url:myURL);\n  print(data);\n\n}\n\n```\n\n\n\n\n\n\n\n## Credit\nThis library is inspired by [open_graph_parser](https://github.com/Patte1808/open_graph_parser). \nHowever this one tries to be more general.\n\n\n## Roadmap\n- Weighted or Preferred Metadata. Can assign custom weights for each parser to provide a fallback priority sytem\n- Improve Documentation\n\n\n## Questions, Bugs, and Feature Requests\nPlease forward all queries about this project to the [issue tracker](https://github.com/jg-l/metadata_fetch/issues).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjg-l%2Fmetadata_fetch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjg-l%2Fmetadata_fetch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjg-l%2Fmetadata_fetch/lists"}