diff --git a/sdk/fidl/fuchsia.feedback/data_provider.fidl b/sdk/fidl/fuchsia.feedback/data_provider.fidl
index 5cbc431..51ad293 100644
--- a/sdk/fidl/fuchsia.feedback/data_provider.fidl
+++ b/sdk/fidl/fuchsia.feedback/data_provider.fidl
@@ -11,15 +11,10 @@
 /// Provides data useful to attach in feedback reports (crash, user feedback or bug reports).
 [Discoverable]
 protocol DataProvider {
-    /// Returns all the feedback data except the screenshot, which is provided separately.
-    [Transitional = "deprecated in favor of GetBugreport() "]
-    GetData() -> (Data data) error zx.status;
-
     /// Returns a bugreport containing all the feedback data except the screenshot, which is
     /// provided separately.
     ///
     /// `bugreport` may be empty if there was an issue generating the bugreport.
-    [Transitional = "replacement for GetData() "]
     GetBugreport(GetBugreportParameters params) -> (Bugreport bugreport);
 
     /// Returns an image of the current view encoded in the provided `encoding`.
@@ -35,23 +30,6 @@
 
 const uint32 MAX_NUM_ANNOTATIONS_PROVIDED = 64;
 
-/// Data to attach to feedback reports.
-///
-/// Clients typically upload the data straight to servers without expecting some
-/// particular fields. So the data comes in the form of arbitrary key-value pairs
-/// that clients can directly forward to the servers.
-table Data {
-    /// A vector of key-value string pairs. Keys are guaranteed to be unique.
-    1: vector<Annotation>:MAX_NUM_ANNOTATIONS_PROVIDED annotations;
-
-    /// A bundle of Attachments objects stored as an Attachment itself, e.g., it
-    /// could be a ZIP archive bundling a vector of Attachment objects.
-    3: Attachment attachment_bundle;
-
-    // Deprecated.
-    2: reserved;
-};
-
 /// Parameters for the DataProvider::GetBugreport() method.
 table GetBugreportParameters {
     /// A bugreport aggregates various data from the platform (device uptime, logs, Inspect data,
diff --git a/sdk/fidl/fuchsia.feedback/fuchsia.feedback.api b/sdk/fidl/fuchsia.feedback/fuchsia.feedback.api
index b3fb1884..152d921 100644
--- a/sdk/fidl/fuchsia.feedback/fuchsia.feedback.api
+++ b/sdk/fidl/fuchsia.feedback/fuchsia.feedback.api
@@ -1,3 +1,3 @@
 {
-  "fidl/fuchsia.feedback": "6cd703e1ff4b1916025e46027716e4e3"
+  "fidl/fuchsia.feedback": "d2859b43bb609c934106a4416cc9733b"
 }
\ No newline at end of file
diff --git a/src/developer/forensics/feedback_data/data_provider.cc b/src/developer/forensics/feedback_data/data_provider.cc
index 1159936..3a225f6 100644
--- a/src/developer/forensics/feedback_data/data_provider.cc
+++ b/src/developer/forensics/feedback_data/data_provider.cc
@@ -30,7 +30,6 @@
 namespace {
 
 using fuchsia::feedback::Bugreport;
-using fuchsia::feedback::Data;
 using fuchsia::feedback::ImageEncoding;
 using fuchsia::feedback::Screenshot;
 
@@ -124,20 +123,6 @@
   executor_.schedule_task(std::move(promise));
 }
 
-void DataProvider::GetData(GetDataCallback callback) {
-  GetBugreport(fuchsia::feedback::GetBugreportParameters(),
-               [callback = std::move(callback)](Bugreport bugreport) {
-                 Data data;
-                 if (bugreport.has_annotations()) {
-                   data.set_annotations(bugreport.annotations());
-                 }
-                 if (bugreport.has_bugreport()) {
-                   data.set_attachment_bundle(std::move(*bugreport.mutable_bugreport()));
-                 }
-                 callback(::fit::ok(std::move(data)));
-               });
-}
-
 void DataProvider::GetScreenshot(ImageEncoding encoding, GetScreenshotCallback callback) {
   auto promise =
       TakeScreenshot(
diff --git a/src/developer/forensics/feedback_data/data_provider.h b/src/developer/forensics/feedback_data/data_provider.h
index a56520f..6fe76dc 100644
--- a/src/developer/forensics/feedback_data/data_provider.h
+++ b/src/developer/forensics/feedback_data/data_provider.h
@@ -28,8 +28,6 @@
   // |fuchsia::feedback::DataProvider|
   void GetBugreport(fuchsia::feedback::GetBugreportParameters params,
                     GetBugreportCallback callback) override;
-  // TOOD(41004): remove once no longer in the API.
-  void GetData(GetDataCallback callback) override;
   void GetScreenshot(fuchsia::feedback::ImageEncoding encoding,
                      GetScreenshotCallback callback) override;
 
diff --git a/src/developer/forensics/feedback_data/tests/data_provider_unittest.cc b/src/developer/forensics/feedback_data/tests/data_provider_unittest.cc
index 164587b..1a8c2e3 100644
--- a/src/developer/forensics/feedback_data/tests/data_provider_unittest.cc
+++ b/src/developer/forensics/feedback_data/tests/data_provider_unittest.cc
@@ -49,7 +49,6 @@
 
 using fuchsia::feedback::Attachment;
 using fuchsia::feedback::Bugreport;
-using fuchsia::feedback::Data;
 using fuchsia::feedback::ImageEncoding;
 using fuchsia::feedback::Screenshot;
 using testing::UnorderedElementsAreArray;
diff --git a/src/developer/forensics/feedback_data/tests/feedback_data_integration_test.cc b/src/developer/forensics/feedback_data/tests/feedback_data_integration_test.cc
index bbf41fd..9f7c980 100644
--- a/src/developer/forensics/feedback_data/tests/feedback_data_integration_test.cc
+++ b/src/developer/forensics/feedback_data/tests/feedback_data_integration_test.cc
@@ -43,8 +43,6 @@
 using fuchsia::feedback::Attachment;
 using fuchsia::feedback::Bugreport;
 using fuchsia::feedback::ComponentDataRegisterSyncPtr;
-using fuchsia::feedback::Data;
-using fuchsia::feedback::DataProvider_GetData_Result;
 using fuchsia::feedback::DataProviderSyncPtr;
 using fuchsia::feedback::DeviceIdProvider_GetId_Result;
 using fuchsia::feedback::DeviceIdProviderSyncPtr;
@@ -389,7 +387,7 @@
 }
 
 TEST_F(FeedbackDataIntegrationTest,
-       DataProvider_GetData_NonPlatformAnnotationsFromComponentDataRegister) {
+       DataProvider_GetBugreport_NonPlatformAnnotationsFromComponentDataRegister) {
   // We make sure the components serving the services GetBugreport() connects to are up and running.
   WaitForLogger();
   WaitForChannelProvider();
@@ -418,23 +416,6 @@
   EXPECT_THAT(bugreport.annotations(), testing::Contains(MatchesAnnotation("namespace.k", "v")));
 }
 
-// TOOD(41004): remove once no longer in the API.
-TEST_F(FeedbackDataIntegrationTest, DataProvider_GetData_SmokeTest) {
-  // We make sure the components serving the services GetData() connects to are up and running.
-  WaitForLogger();
-  WaitForChannelProvider();
-  WaitForInspect();
-  WaitForBoardProvider();
-  WaitForProductProvider();
-  WaitForLastRebootInfoProvider();
-
-  DataProviderSyncPtr data_provider;
-  environment_services_->Connect(data_provider.NewRequest());
-
-  DataProvider_GetData_Result out_result;
-  ASSERT_EQ(data_provider->GetData(&out_result), ZX_OK);
-}
-
 TEST_F(FeedbackDataIntegrationTest, DeviceIdProvider_GetId_CheckValue) {
   DeviceIdProviderSyncPtr device_id_provider;
   environment_services_->Connect(device_id_provider.NewRequest());
